PyQt 信号的问题
Problems with PyQt signals
我使用 PyQt4 库 python 开发了一个应用程序。
嗯,我有很多 "connections" 来启动一个 class 的方法,例如,当另一个方法完成时(例如 self.emit(QtCore.SIGNAL('some_signal(QString, QString)'), string1, string2)
)。
因此,当我在 class 的 init 方法中发出信号(如上一段中的信号)时,它会被忽略。但是,如果我创建一个按钮,然后将此按钮连接到一个方法,并在该方法中启动信号,它就会起作用。
任何人都可以解释一下原因并给我一个解决方案来在 class 的 init 方法中启动信号。
提前致谢!!
亚德里亚
从 __init__
方法发送信号工作正常:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QMainWindow):
mySignal = QtCore.pyqtSignal()
def __init__(self):
super(Example, self).__init__()
self.initUI()
print "START - Emit signal from __init__"
self.mySignal.emit()
print "END - Emit signal from __init__"
def initUI(self):
self.mySignal.connect(self.print_signal)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Emit signal')
self.show()
def mousePressEvent(self, event):
self.mySignal.emit()
def print_signal(self):
print "Signal emitted"
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我使用 PyQt4 库 python 开发了一个应用程序。
嗯,我有很多 "connections" 来启动一个 class 的方法,例如,当另一个方法完成时(例如 self.emit(QtCore.SIGNAL('some_signal(QString, QString)'), string1, string2)
)。
因此,当我在 class 的 init 方法中发出信号(如上一段中的信号)时,它会被忽略。但是,如果我创建一个按钮,然后将此按钮连接到一个方法,并在该方法中启动信号,它就会起作用。
任何人都可以解释一下原因并给我一个解决方案来在 class 的 init 方法中启动信号。
提前致谢!!
亚德里亚
从 __init__
方法发送信号工作正常:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QMainWindow):
mySignal = QtCore.pyqtSignal()
def __init__(self):
super(Example, self).__init__()
self.initUI()
print "START - Emit signal from __init__"
self.mySignal.emit()
print "END - Emit signal from __init__"
def initUI(self):
self.mySignal.connect(self.print_signal)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Emit signal')
self.show()
def mousePressEvent(self, event):
self.mySignal.emit()
def print_signal(self):
print "Signal emitted"
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()