Пятница, 24.11.2017, 03:08
Приветствую Вас Гость

Программирование

Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 0
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2015 » Сентябрь » 14 » Вопрос по PyQT4 [решено]
09:33
Вопрос по PyQT4 [решено]
Написал как-то на PyQT4 GUI для работы с простенькой базой данных (телефонный справочник). Но не могу понять, как правильно реализовать одну функцию. Надо, чтобы при нажатии кнопки "Поиск" эта кнопка становилась неактивной на время выполнения запроса, а в строке статуса отображалось сообщение "Выполняется поиск". Казалось бы, всё просто. Но вот такой код на практике не работает:class MainWindow(QtGui.QMainWindow): def __init__(self, Найдено записей: ') self.search = QtGui.QPushButton(u'Поиск') [...] self.connect(self.search, QtCore.SIGNAL("clicked()"), self.dosearch) def dosearch(self): self.search.setEnabled(False) self.statusBar().showMessage(u'Выполняется поиск...') con = sqlite.connect(pathtobase) cur = con.cursor() [...тут пропустим код формирования запроса в querystring...] if querystring: select = "select * from phones where " + querystring + " order by number" cur.execute(select) results = cur.fetchall() self.statusBar().showMessage(u'Найдено записей: %s' % len(results)) if not results: results = [('', '', '', '', '')] else: results = [('', '', '', '', '')] self.statusBar().showMessage(u'Найдено записей: 0 (некорректный запрос)') for row in range(0, len(results)): results[row] = fixnumber(results[row][0]), results[row][1].title(), results[row][2].title(), results[row][3], results[row][4] tablemodel = PhoneTableModel(results, self.headers, self) self.resultTable.setModel(tablemodel) con.close() self.search.setEnabled(True) [...] Не работает ни self.search.setEnabled(False), ни self.statusBar().showMessage(u'Выполняется поиск...') - виджеты не обновляются. Если, конечно, не допустить ошибку в коде перед выполнением запроса к базе - тогда выполнение программы останавливается и виджеты находятся в состоянии 'кнопка неактивна', 'в строке статуса - "Выполняется запрос..."'.А как бы правильно сделать так, чтобы запрос к базе выполнялся только после того, как виджеты на форме действительно обновились?UPDATE: проблема решается с помощью QCoreApplication::processEvents()
Просмотров: 149 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт

Поиск
Календарь
«  Сентябрь 2015  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930
Архив записей