2014-04-17 47 views
0

我不知道如何讓信號在兩個不同的類之間傳遞。我希望classA按鈕自定義信號顯示classB按鈕! (self.butt2.setVisible(真)) 代碼是如下:如何連接PyQt中不同對象的自定義信號?

from PyQt4 import QtGui,QtCore 
import sys 
class A(QtGui.QWidget): 
    customSignal = QtCore.pyqtSignal(str) 
    def __init__(self,parent=None): 
     super(A,self).__init__(parent) 

     self.applyButton = QtGui.QPushButton('Apply') 

     mLayout = QtGui.QHBoxLayout() 
     mLayout.addWidget(self.applyButton) 
     self.setLayout(mLayout) 

     self.applyButton.clicked.connect(self.emitSignal) 

     self.customSignal.connect(self.printStr) 
    def emitSignal(self): 
     self.customSignal.emit('classA') 
    def printStr(self): 
     print 'this is class A' 

class B(QtGui.QWidget): 
    def __init__(self,parent=None): 
     super(B,self).__init__(parent) 

     self.butt1 = QtGui.QPushButton('abc') 
     self.butt2 = QtGui.QPushButton('def') 

     self.butt2.setVisible(False) 

     mainLayout = QtGui.QVBoxLayout() 
     mainLayout.addWidget(self.butt1) 
     mainLayout.addWidget(self.butt2) 

     self.setLayout(mainLayout) 
if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    a = A() 
    a.show() 

    b = B() 
    b.show() 
    sys.exit(app.exec_()) 

回答

1

假設你想要的A級按鈕切換B類按鈕的可見性:

a.customSignal.connect(lambda: b.setVisible(not b.isVisible())) 
+0

def printStr(self):self.customSignal.connect ...什麼也沒有發生! – user3134294

+0

@ user3134294。你有什麼可能的原因將它連接到'printStr'方法!?在'b.show()'之後,在腳本的底部建立連接。 – ekhumoro

相關問題