如何使用Gtk.按钮已单击()? 提供的参数数错误

2024-04-19 10:01:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在GTK+/Pygobject中使用python构建一个图形界面,但是遇到了一些问题。主要是事件。在

我需要什么?每次单击按钮时执行一个简单函数。 样本代码:

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)

似乎很明显按钮。已单击()应该这样做,但是它的回溯说明了错误的参数数量,我无法从这个documentation i found中找出问题所在。我做错什么了?在

附言:有没有官方的“新手不宜太多硬核”文件?在


Tags: inpyimageselfgtkinitondef
2条回答

似乎很明显clicked信号应该做什么,但是您误解了连接信号处理程序的语法。通常这会引发一个更直观的错误,但在本例中,clicked()还有一个您无意中调用的clicked()方法。(该方法是非常旧但尚未弃用的API的一部分,并激发一个假的clicked信号。)

这样做:

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

{{ffy>不是把它作为一个方法来调用的,因为它不是一个方法

 button.clicked(self.on_button_clicked())

您正在这里呼叫on_button_clicked。删除()以简单地引用该方法:

^{pr2}$

相关问题 更多 >