Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Запуск функции по клику на кнопку (PyQt4) [RSS Feed]

#1 Май 28, 2015 09:36:36

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Всем привет. Подскажите пожалуйста почему как-то не корректно работает запуск функции по клику на кнопку?

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_()
Хочу, чтобы по нажатию кнопки в QListWidget падало 2 текста с интервалом в 1 секунду. А получается что после нажатия проходит 2 секунды и в QListWidget падает сразу 2 текста.

Офлайн

#2 Май 28, 2015 12:32:22

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2788
Репутация: +  185  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

> А получается что после нажатия проходит 2 секунды и в QListWidget падает сразу 2 текста.

Ну наверное это происодит потому что у тебя поток выполнение блокируется. Используй таймеры и всё будет хорошо.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#3 Май 28, 2015 17:41:37

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Rodegast
Используй таймеры и всё будет хорошо.
И как же сразу не заюзал их. Спасибо.

Офлайн

#4 Май 28, 2015 17:43:54

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Ещё есть ленивый вариант с ручным проталкиванием сообщений в очереди.

Офлайн

#5 Май 28, 2015 17:46:22

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Shaman
Ещё есть ленивый вариант с ручным проталкиванием сообщений в очереди.
Да не. С таймерами самое то.

Офлайн

#6 Май 28, 2015 17:48:54

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

С паузами - конечно да, но в других случаях м.б. пригодится.

Офлайн

#7 Май 28, 2015 17:54:59

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Shaman
С паузами - конечно да, но в других случаях м.б. пригодится.
А что за способ? М.б. и правда когда-нибудь столкнусь.

Отредактировано hvppydvddy (Май 28, 2015 17:55:23)

Офлайн

#8 Май 28, 2015 17:56:55

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Вручную вызывать processEvents() объекта QApplication.

Офлайн

#9 Май 28, 2015 17:58:30

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

Shaman
Вручную вызывать processEvents() объекта QApplication.
Мне на соседнем форуме первым постом подсказали такой вариант

Офлайн

#10 Май 28, 2015 18:02:19

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Запуск функции по клику на кнопку (PyQt4)

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

Офлайн

  • Начало
  • » GUI
  • » Запуск функции по клику на кнопку (PyQt4) [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version