2013-01-23 4 views
0

PySide를 사용하여 Qt에서 응용 프로그램을 만들고 있습니다. 내 main.py에는 Ui를 설정하는 Program이라는 클래스가 있으며 특정 영역과 관련된 함수가있는 또 다른 클래스가 있습니다. 예를 들어 나는 시작과 명확한 버튼이있는 영역이 있습니다. RunArea 클래스의 함수를 정의하고 클래스 프로그램의 신호를 연결하지만 아무 일도 일어나지 않습니다. 여기에 코드가 있습니다. 나는 일이 기대다른 클래스의 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() 

내가 시작을 클릭하면 "항목을 로그"(setupUi에 정의 됨)은 QTextEdit에 넣어 것입니다. 그리고 클리어를 클릭하면 이름이 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() 
관련 문제