2013-01-23 21 views
0

我正在使用PySide在Qt中進行應用程序。在我的main.py中,我有一個名爲Program的類來設置ui,而我有另一個具有某個區域功能的類。例如,我有一個有開始和清除按鈕的區域。我在類RunArea中定義函數,並在類Program中連接信號,但沒有任何反應。這是代碼。在另一個類中使用GUI元素的PySide

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

     self.runArea = RunArea() 
     self.startButton.clicked.connect(self.runArea.start) 
     self.clearButton.clicked.connect(self.runArea.clear) 


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

    def start(self): 
     self.log.setPlainText("log entry") 

    def clear(self): 
     self.runTree.clear() 

我希望發生的是,「日誌條目」將被放置在一個QTextEdit(在setupUi定義),當我點擊開始。當我點擊清除名爲runTree的TreeWidget將被清除。我知道這些信號正在工作,但沒有任何顯示。請有人解釋爲什麼它不起作用?

回答

0

我不知道爲什麼/你的代碼不工作,儘管我懷疑它與繼承沒有提到兩個類中的同一個對象有關。
但是,這應該如何完成:

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

     self.runArea = RunArea(self) 
     self.startButton.clicked.connect(self.runArea.start) 
     self.clearButton.clicked.connect(self.runArea.clear) 


class RunArea(): 
    def __init__(self, parent=None): 
     self.parent = parent 

    def start(self): 
     self.parent.log.setPlainText("log entry") 

    def clear(self): 
     self.parent.runTree.clear() 
相關問題