因此,我目前正在开发一个PyQT5GUI,我已经花了几个小时来研究它。
我想要signal1
连接到slot3
,但什么也没发生。我真的很困惑。为什么它不能连接到slot3
import sys
from PyQt5 import QtCore as core
from PyQt5 import QtWidgets as widget
class MainApp(widget.QApplication):
def __init__(self, argv):
widget.QApplication.__init__(self, argv)
self.window1 = Window1()
self.window2 = Window2()
self.window1.signal1.connect(self.window2.slot3)
class Window1(widget.QMainWindow):
signal1 = core.pyqtSignal()
signal2 = core.pyqtSignal()
def __init__(self):
widget.QMainWindow.__init__(self)
self.slot1()
self.show()
def slot1(self):
self.signal1.emit()
print('slot1 connected')
def slot2(self):
print('slot2 connected')
class Window2(widget.QMainWindow):
signal3 = core.pyqtSignal()
signal4 = core.pyqtSignal()
def __init__(self):
widget.QMainWindow.__init__(self)
self.show()
def slot3(self):
print('slot3 connected')
def slot4(self):
print('slot4 connected')
if __name__ == '__main__':
app = MainApp(sys.argv)
sys.exit(app.exec_())
导致该问题的原因是信号在连接之前发出。在给定时刻发出的信号只会被以前连接过的插槽听到,不会通知新连接
一种可能的解决方案是使用QTimer:
在代码中,
QTimer.singleShot(0, ...)
在eventloop控制之后的一瞬间被调用,这是在执行同步逻辑之后的一瞬间(其中连接代码为)相关问题 更多 >
编程相关推荐