Форум сайта python.su
0
Всем привет. Подскажите пожалуйста почему как-то не корректно работает запуск функции по клику на кнопку?
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_()
Офлайн
186
> А получается что после нажатия проходит 2 секунды и в QListWidget падает сразу 2 текста.
Ну наверное это происодит потому что у тебя поток выполнение блокируется. Используй таймеры и всё будет хорошо.
Офлайн
0
RodegastИ как же сразу не заюзал их. Спасибо.
Используй таймеры и всё будет хорошо.
Офлайн
88
Ещё есть ленивый вариант с ручным проталкиванием сообщений в очереди.
Офлайн
0
ShamanДа не. С таймерами самое то.
Ещё есть ленивый вариант с ручным проталкиванием сообщений в очереди.
Офлайн
88
С паузами - конечно да, но в других случаях м.б. пригодится.
Офлайн
0
ShamanА что за способ? М.б. и правда когда-нибудь столкнусь.
С паузами - конечно да, но в других случаях м.б. пригодится.
Отредактировано hvppydvddy (Май 28, 2015 17:55:23)
Офлайн
88
Вручную вызывать processEvents() объекта QApplication.
Офлайн
0
ShamanМне на соседнем форуме первым постом подсказали такой вариант
Вручную вызывать processEvents() объекта QApplication.

Офлайн
88
Ну так бородатый способ, применимый почти во всех гуях.
Офлайн