Осваиваю PyQt. Разбираюсь с нитками. Конкретно меня интересует следующее, какая-то нитка вырабатывает сигнал и передаёт произвольный питоновский объект в основной цикл разбора сообщений. Делаю следующее: class Producer(QThread): def __init__(self, parent=None): QThread.__init__(self, parent) self.keep_running = True self.count = 0 self.active = False def activate(self): self.active = True def deactivate(self): self.active = False def run(self): while self.keep_running: self.count += 1 # Вот именно 300 или что здесь указать зачасутю передаётся # вместо словаря с данными self.msleep(300) d = { 'time': time.time(), 'count': self.count } self.d = d # Тут пробовал указывать и d и self.d if self.active: self.emit(SIGNAL('newData'), dict(d)) class Logic(QObject): def __init__(self, widget): QObject.__init__(self) self.widget = widget self.text = self.widget.text self.start_button = self.widget.start_button self.stop_button = self.widget.stop_button self.thread = Producer() self.connect(self.start_button, SIGNAL('clicked()'), self.thread.activate) self.connect(self.stop_button, SIGNAL('clicked()'), self.thread.deactivate) # Здесь пробовал Qt.QueuedConnection не указывать. Та же фигня self.connect(self.thread, SIGNAL('newData'), self.processData, Qt.QueuedConnection) self.connect(self.thread, SIGNAL('text(QString)'), self.text.append) self.thread.start() def processData(self, data): print data print type(data) И косяк в том что Logic.processData() иногда печатает то что надо, т.е. словарь а иногда (даже скорее как правило :-() передаётся значение аргумента Producer.msleep() 8-() Знатоки PyQT, что я делаю не так? И как это надо делать? P.S. В wxPython-е такое работает на ура :-)
Ответ на:
комментарий
от ero-sennin
Ответ на:
комментарий
от redvasily
Ответ на:
комментарий
от ero-sennin
Ответ на:
комментарий
от ero-sennin
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Kill QThread (2011)
- Форум Быдлокод Pygtk (2012)
- Форум pyqt5 + QPyDesignerTaskMenuExtension (2018)
- Форум Timers cannot be stopped from another thread (2016)
- Форум [gtk][pygtk] Неправильная реакция на обработчики сигналов «test-collapse-row» и «test-expand-row» виджета gtk.TreeView (2011)
- Форум Убить процесс загрузки стрима в vlc.py (2017)
- Форум Python PyQt5 вspjd виджета из класса eventFilter (2020)
- Форум Добавить выполнение команды после каждого ввода в qtconsole (2017)
- Форум pygtk обработка флагов (2012)
- Форум Закрыть окно gtk, если оно потеряло фокус (2024)