2017-11-22 12 views
0

버튼 신호를 button_clicked() 메소드에 연결하기 만하면됩니다. QTextEdit 객체의 내용은 버튼을 클릭 할 때 지워야합니다.왜 PyQt4의 기능 슬롯이 connect()`not defined`입니까?

class App: 
    def window(self): 
     app = QApplication(sys.argv) 

     main_win = QWidget() 
     main_win.show() 

     self.disp_txt = QTextEdit(main_win) 
     self.disp_txt.setText('hello world') 
     self.disp_txt.show() 

     button = QPushButton(main_win) 
     button.show() 
     QObject.connect(button,SIGNAL("clicked()"),button_clicked) <---exact spelling 

     sys.exit(app.exec_()) 

    def button_clicked(self): <---exact spelling 
     self.disp_txt.clear() 

if __name__ == '__main__': 
    a = App() 
    a.window() 

나는 QObject.connect의 인수에서 오류가 발생합니다 : NameError: name button_clicked is not defined. 나는 객체 지향 프로그래밍에 익숙하지 않고 클래스의 구조가 적절한 지 확신 할 수 없다.

+0

[새 스타일 신호 슬롯 구문] (http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html)을 사용하는 것이 좋습니다. 이렇게하면'button.clicked.connect (self.button_clicked)'를 할 수있게되어 훨씬 더 명확하고 이해하기 쉽습니다. – ekhumoro

답변

0

죄송합니다. 인수가 작동하려면 인수가 self.button_clicked이어야합니다. 이 작은 문 제를 여전히 이해하고 있지만이 작은 문제는 해결되었습니다.