2013-01-22 81 views
1

你好,我正在製作一個程序,我正在使用一個stackedLayout在程序中顯示不同的「區域」。我想用類來「分離」與某些領域相關的功能。例如Area1有一個開始按鈕和一個清除按鈕,當按下開始按鈕時,它運行程序,當清除按鈕被按下時,該區域被清除。當我定義在我的主類中啓動和清除的函數時,按鈕可以正常工作,但是當我從另一個類調用它們時,什麼都不會發生。使用不同類別的功能連接信號

main.py

class Program(QtGui.QMainWindow, Interface.Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(Program, self).__init__(parent) 
     self.setupUi(self) 

     run = hello() 
     self.startButton.clicked.connect(run.hello1) 
     self.clearButton.clicked.connect(run.hello2) 

class hello(object): 
    def hello1(self): 
     print "start button" 

    def hello2(self): 
     print "stop button" 

可能有人請解釋爲什麼當我點擊按鈕,正在打印什麼?

+0

你是如何從其他類調用它們?你是否在正確的'hello'實例上打電話給他們? –

+0

對不起,我是新來的班。 「正確的實例」是什麼意思? – user1976336

回答

2

您不保留對您的hello實例的引用。所以這是垃圾收集後__init__結束,並且當您按下按鈕時不可用。

嘗試把它作爲一個實例屬性(self.run),而不是局部變量(run):

class Program(QtGui.QMainWindow, Interface.Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(Program, self).__init__(parent) 
     self.setupUi(self) 

     self.run = hello() 
     self.startButton.clicked.connect(self.run.hello1) 
     self.clearButton.clicked.connect(self.run.hello2) 

class hello(object): 
    def hello1(self): 
     print "start button" 

    def hello2(self): 
     print "stop button" 
+0

工作非常感謝你:) – user1976336