2014-03-03 4 views
0

GTK +/Pygobject에서 파이썬으로 그래픽 인터페이스를 작성하려고하는데 문제가 있습니다. 주로 이벤트.Gtk.Button.clicked()를 사용하는 방법? 잘못된 인수 수 제공

무엇이 필요합니까? 버튼을 클릭 할 때마다 간단한 함수를 실행합니다. 샘플 코드 :

class Window(Gtk.Window): 

def __init__(self): 
    [...] 
    button = Gtk.Button() 
    icon = Gio.ThemedIcon(name="system-shutdown-symbolic") 
    image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.BUTTON) 
    button.add(image) 
    button.clicked(self.on_button_clicked()) 
    hb.pack_end(button) 
    [...] 


def on_button_clicked(self): 
    print("Hello World") 

역 추적 : 그것은이해야 할() button.clicked하지만 인수의 잘못된 번호에 대한 자사의 추적 회담 무엇을 아주 분명한 듯

Traceback (most recent call last): File "main.py", line 7, in executa = igrafica.Window() File "[...]/igrafica.py", line 23, in init button.clicked(self.on_button_clicked()) TypeError: clicked() takes exactly 1 argument (2 given)

, 그리고 내가 할 수 없습니다 이 문제가 무엇인지 알아 내려면 documentation i found. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

추 신 : "너무 많은 - 하드 코어 - 초보자"문서가 아닌 공식이 있습니까?

답변

2

. 일반적으로이 방법을 사용하면보다 직관적 인 오류가 발생하지만 실수로 호출하는 Gtk.Buttonclicked() 메서드가 있습니다. (그 방법은 아주 오래된하지만 아직 사용되지 않는 API의 일부이며, 가짜 clicked 신호를 발생합니다.)

는이 작업을 수행 :

button.connect('clicked', self.on_button_clicked) 

(self.on_button_clicked()을 넣어하지 기억, eduffy가 지적 메서드 호출이 아니기 때문에 다른 메서드에 매개 변수로 전달할 수 있습니다.

1
button.clicked(self.on_button_clicked()) 

여기에 on_button_clicked이 있습니다. () 단순히 방법을 참조하기 위해 제거 : 그것은 clicked 신호가 무엇을해야하는지 분명 보이지 않는,하지만 당신은 신호 처리기를 연결하기위한 구문을 오해하고

button.clicked(self.on_button_clicked) 
+0

죄송합니다. 동일한 오류가 발생했습니다. button.clicked (self.on_button_clicked) TypeError : clicked() takes 정확하게 1 인수 (2 주어진) – SOMN