2015-04-20 126 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