Я пытаюсь создать udp-сервер для получения двоичных сообщений, сокет испускает processMsg-сигнал, когда он получил сообщение, а функция processMsg пытается испускать другой сигнал в соответствии с типом сообщения. Объект QDefines определяет тип сообщения и генерируемый сигнал. Я использую dict для работы с отсутствующим переключателем/case в python. Проблема в том, что функция setRfRsp не выполнялась при получении сообщения UCSI_SET_RF_RSP_E.Сигнал PyQt4 не излучает
Main.py файл:
class mainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
super(mainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.defines = QDefines()
self.connect(self.defines,QtCore.SIGNAL("signalSetRfRsp(PyQt_PyObject)"), self.setRfRsp)
self.socket = QUdp(self.localIp, self.localPort, self.remoteIp, self.remotePort)
self.connect(self.socket, QtCore.SIGNAL("processMsg(int,PyQt_PyObject)"), self.processMsg)
def setRfRsp(self, msg):
if msg == 0x00000000:
print "open"
else:
print "closed"
def processMsg(self, msgType, msg):
defines = QDefines()
msg_dict = defines.msgDictGen();
msg_dict[msgType](msg)
defines.py файл:
class QDefines(QtCore.QObject):
UCSI_SET_RF_RSP_E = 0x000d
def __init__(self, parent = None):
super(QDefines, self).__init__()
def UCSI_SET_RF_RSP(self, msg):
self.emit(QtCore.SIGNAL("signalSetRfRsp(PyQt_PyObject)"), msg)
def msgDictGen(self):
self.msgDict = {
self.UCSI_SET_RF_RSP_E : self.UCSI_SET_RF_RSP
}
return self.msgDict
Вот и все. Я случайно воссоздаю экземпляр дважды. Спасибо за советы! Я начну привыкать к новому стилю :) – bresai