Форум сайта python.su
Всем привет. Подскажите пожалуйста почему как-то не корректно работает запуск функции по клику на кнопку?
from PyQt4.QtGui import * from PyQt4.QtCore import * import lb_window_ui, time class mainClass(QWidget, lb_window_ui.Ui_mainform): def __init__(self): super(mainClass, self).__init__() self.setupUi(self) self.start_btn.clicked.connect(self.addingtext) def addingtext(self): time.sleep(1) text = 'Text_1' self.item_lw.addItem(text) time.sleep(1) text2 = 'Text_2' self.item_lw.addItem(text2) if __name__ == '__main__': app = QApplication([]) w = mainClass() w.show() app.exec_()
Офлайн
> А получается что после нажатия проходит 2 секунды и в QListWidget падает сразу 2 текста.
Ну наверное это происодит потому что у тебя поток выполнение блокируется. Используй таймеры и всё будет хорошо.
Онлайн
RodegastИ как же сразу не заюзал их. Спасибо.
Используй таймеры и всё будет хорошо.
Офлайн
Ещё есть ленивый вариант с ручным проталкиванием сообщений в очереди.
Офлайн
ShamanДа не. С таймерами самое то.
Ещё есть ленивый вариант с ручным проталкиванием сообщений в очереди.
Офлайн
С паузами - конечно да, но в других случаях м.б. пригодится.
Офлайн
ShamanА что за способ? М.б. и правда когда-нибудь столкнусь.
С паузами - конечно да, но в других случаях м.б. пригодится.
Отредактировано hvppydvddy (Май 28, 2015 17:55:23)
Офлайн
Вручную вызывать processEvents() объекта QApplication.
Офлайн
ShamanМне на соседнем форуме первым постом подсказали такой вариант
Вручную вызывать processEvents() объекта QApplication.
Офлайн
Ну так бородатый способ, применимый почти во всех гуях.
Офлайн