переход с модели Inherited QThread на Worker
Так что через большую помощь в моих предыдущих вопросах (Прерывание QThread сна а такжеPySide передает сигналы из QThread в слот в другом QThread) Решил попытаться поменять с наследственногоQThread
модель для модели работника. Я думаю, что я должен остаться сQThread
модель как у меня так работала, а другой модели нет. Однако я не уверен, почему модель Worker не работает для меня.
Я пытаюсь сделать это, пожалуйста, дайте мне знать, если в моей методологии что-то не так?
у меня естьQtGui.QWidget
это мой основной графический интерфейс. Я используюQPushButton
чтобы сигнализировать, что я попытался свести код к основам, где я считаю, что проблема. Я подтвердил, чтоdatagramHandled
Signal
испускается, ноpacket_handled
Slot
кажется, не позвонили.
class myObject(QtCore.QObject):
def __init__(self):
super(myObject, self).__init__()
self.ready=False
@QtCore.Slot()
def do_work(self):
#send a packet
self.ready=False
while not self.ready:
time.sleep(0.01)
@QtCore.Slot(int)
def packet_handled(self, errorCode):
print "Packet received."
self.ready = True
class myWidget(QtGui.QWidget):
datagramHandled = QtCore.Signal(int)
startRunThread = QtCore.Signal()
def __init__(self,parent=None, **kwargs):
super(myWidget, self).__init__(parent=parent)
# Bunch of GUI setup stuff (working)
self.myRunThread = QtCore.QThread()
@QtCore.Slot()
def run_command(self):
self.myRunObj = myObject()
self.myRunObj.moveToThread(self.myRunThread)
self.datagramHandled.connect(self.myRunObj.packet_handled)
self.startRunThread.connect(self.myRunObj.do_work)
self.myRunThread.start()
self.startRunThread.emit()
@QtCore.Slot()
def handle_datagram(self):
#handle the incoming datagram
errorCode = 0
self.datagramHandled.emit(errorCode)