PyQt信号出现问题

时间:2015-04-20 11:19:42

标签: python pyqt pyqt4

我使用PyQt4库开发了一个使用python的应用程序。

好吧,我有很多"连接"例如,当另一个类的方法结束时(例如self.emit(QtCore.SIGNAL('some_signal(QString, QString)'), string1, string2))启动一个类的方法。

因此,当我在类的init方法中启动一个信号(如最后一段中的信号)时,它会被忽略。但是如果我创建一个按钮,然后将此按钮连接到方法,并且在此方法中我启动信号,它就可以工作。

任何人都可以解释我为什么,并给我一个解决方案,在类的init方法中启动信号。

提前致谢!!

阿德里亚

1 个答案:

答案 0 :(得分:0)

__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()