2014-03-03 17 views
0

我想用python在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") 

回溯:

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)

这似乎相当明显发生了什么button.clicked()应该做的,但有关参数错误的号码其追踪的会谈,我不能从documentation i found找出问题所在。我究竟做错了什么?

PS:有没有官员不是“新手太硬核”的文档?

回答

2

它似乎明显clicked信号应该做的,但你误解了语法,用于连接信号处理程序。通常这会引发更直观的错误,但在这种情况下,Gtk.Button上也有一个clicked()方法,您无意中调用。 (这种方法是很老,但尚未弃用的API的一部分,并触发一个假clicked信号。)

这样做:

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

(切记不要把()​​后,作为eduffy指出因为你不是调用方法,而是将它作为参数传递给另一个方法。)

1
button.clicked(self.on_button_clicked()) 

你在这里打电话on_button_clicked。除去()简单地引用方法:

button.clicked(self.on_button_clicked) 
+0

对不起,但它给出了完全相同的错误:button.clicked(self.on_button_clicked) TypeError:clicked()take恰好有1个参数(给出2个) – SOMN

相关问题