Solved Newbie 'ish Signals & slots
-
I have successfully used signals to communicate between a main module and a GUI module as per the first code snippets, now I need to do the same but in reverse, GUI to main. I have tried several variants of the second code snippets but without success. Does anybody have a definitive working example of how this can be achieved, thanks.
Main module, working version class measure(QtGui.QMainWindow, Ui_measWindow): # create signal for button press processing keyUpd = QtCore.pyqtSignal() def __init__(self): super(self.__class__, self).__init__() self.ui = Ui_measWindow() setConfig() self.setupUi(self) self._timer = QtCore.QTimer(self) self._timer.timeout.connect(self.play) self._timer.start(30) self._timer = QtCore.QTimer(self) self._timer.timeout.connect(self.chkBtns) self._timer.start(1000) self.update() GUI module class Ui_measWindow(object): def setupUi(self, measWindow): measWindow.setObjectName(_fromUtf8("measWindow")) measWindow.resize(xWin, yWin) measWindow.setWindowTitle(_fromUtf8("Measure")) measWindow.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedKingdom)) self.centralwidget = QtGui.QWidget(measWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.videoFrame = QtGui.QLabel(self.centralwidget) self.videoFrame.setGeometry(QtCore.QRect(0, 0, xCam, yCam)) self.videoFrame.setObjectName(_fromUtf8("videoFrame")) self.txtLabel = QtGui.QLabel(self.centralwidget) self.txtLabel.setGeometry(QtCore.QRect(20, 32, 180, 50)) self.txtLabel.setStyleSheet("QLabel {color : cyan}") self.txtLabel.setObjectName(_fromUtf8("txtLabel")) self.MainWindow = measWindow self.center() <SNIP> measWindow.setCentralWidget(self.centralwidget) self.keyUpd.connect(self.updPos) Main module, non-working version class Mini1D(QtGui.QMainWindow, Ui_miniWindow): self.serUpd.connect(self.serTst) def __init__(self): super(self.__class__, self).__init__() self.ui = Ui_miniWindow() setConfig() self.setupUi(self) self._timer = QtCore.QTimer(self) self._timer.timeout.connect(self.play) self._timer.start(30) start_new_thread(flash,(110.0,10.0)) self.update() def serTst(self): # return ID for S2 is export-80 as per GPIO # return ID for S0 is -1 although still active serial = wpi.serialOpen('/dev/ttyS2', 9600) print(str(serial)) wpi.serialPuts(serial, "test") wpi.serialPutchar(serial, 16) wpi.serialClose(serial) GUI module class Ui_miniWindow(object): # create signal for menu processing serUpd = QtCore.pyqtSignal() def setupUi(self, miniWindow): miniWindow.setObjectName(_fromUtf8("miniWindow")) miniWindow.resize(xWin, yWin) miniWindow.setWindowTitle(_fromUtf8("Mini1D")) miniWindow.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedKingdom)) self.centralwidget = QtGui.QWidget(miniWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.videoFrame = QtGui.QLabel(self.centralwidget) self.videoFrame.setGeometry(QtCore.QRect(0, 0, xCam, yCam)) self.videoFrame.setObjectName(_fromUtf8("videoFrame")) self.txtLabel = QtGui.QLabel(self.centralwidget) self.txtLabel.setGeometry(QtCore.QRect(20, 32, 180, 50)) self.txtLabel.setStyleSheet("QLabel {color : red}") self.txtLabel.setObjectName(_fromUtf8("txtLabel")) self.MainWindow = miniWindow self.center() //your code here