2015-04-20 85 views
0

我使用PyQt4库开发了一个使用python的应用程序。我有很多“连接”来启动一个类的方法,例如,当另一个类的方法结束时(例如,self.emit(QtCore.SIGNAL('some_signal(QString, QString)'), string1, string2))。PyQt信号的问题

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

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

在此先感谢!

阿德里亚

+2

大家好,欢迎堆栈溢出。就目前而言,如果没有更多信息,您的问题就无法回答,并且除非您编辑并提供更多信息,否则很可能会被封闭。请参阅帮助中心[如何提出一个好问题](http://stackoverflow.com/help/how-to-ask)和**,重要**,[如何创建一个最小,完整和可验证的示例](http://stackoverflow.com/help/mcve)。 –

回答

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() 
+0

我已经解决了它,问题是我在实例化连接之前发出信号,然后我发出信号的时候没有连接任何信号。然后,我在所有信号连接被声明后就复制了信号发射线,并且它可以正常工作。感谢您的关注! – adriapm