检查哪个按钮被按下gtk3使用python
我有10个按钮,它们对应于相同的方法。我将如何检查在相应的方法中点击了哪个按钮?我试图检查列表中通过下面的代码特定按钮的按下按钮,但我得到分段错误:检查哪个按钮被按下gtk3使用python
for i in range(0,10):
if button_list[i].clicked():
break
break
#operation with respect to the button clicked
一旦你连接所有的按钮相同的回调,我认为回调将具有此签名:callback(button)
其中button
是发出clicked
信号的按钮。
内部的回调应该是很容易检查使用类似的哪个按钮被点击:
button_list.index(button)
这将返回列表内的按钮的索引。
我没有得到'按钮'的用法。并没有完全得到它是什么 – 2012-01-10 20:36:38
@GauravSood每个gtk回调中存在的参数是发出信号的小部件。对于'clicked'信号,这将是被点击的按钮。因此,你的回调将总是得到一个被点击的按钮的引用,它可以用来检查'button_list'所在的位置。 – jcollado 2012-01-10 20:39:10
好的。所以我必须检索按下按钮的索引,如下面的代码: index = button_list.index() – 2012-01-10 20:44:54
Here's a sample code,说明知道通过使用按钮的标签是什么按钮触发事件:
from gi.repository import Gtk
class ButtonWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Button Demo")
self.set_border_width(10)
hbox = Gtk.Box(spacing=6)
self.add(hbox)
#Lets create 10 buttons for this demo
#You could create and set the label for
#each of the buttons one by one
#but in this case we just create 10
#and call them Button0 to Button9
for i in range(10):
name = "Button{}".format(i)
button = Gtk.Button(name)
button.connect("clicked", self.on_button_clicked)
hbox.pack_start(button, True, True, 0)
def on_button_clicked(self, button):
print button.get_label()
def on_close_clicked(self, button):
print "Closing application"
Gtk.main_quit()
win = ButtonWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
所以你可以只检查标签是什么,并采取相应的行动。
欢迎来到SO。虽然在您的答案中粘贴代码是一种很好的做法,但提供对原始线程的引用非常重要。首先,它表示对撰写作者的作者的尊重。此外,如果有更多信息,人们可以跟随链接。 :)我建议你看看我们的FAQ:http://*.com/faq – ForceMagic 2012-11-06 23:29:46
谢谢。粘贴的代码真的是我的。链接到gtk3文档只是链接到如何在gtk3中使用python按钮的示例。干杯! – jnvilo 2012-11-07 15:56:33
哦,太好了,那么对不起。我已经编辑了您的文章,以添加链接到文档。您可以再次编辑它以指定它指向gtk3文档。你可以通过点击“编辑”链接来实现这一点,你可以随时编辑自己的帖子。像你这样的好答案,你将快速获得声望,你会看到你可以在这里做很多事情。这就是为什么我给你提供常见问题的另一个原因;)祝你有美好的一天 - 关心。 – ForceMagic 2012-11-07 17:43:38
发布您的事件处理程序。所有GtkWidget事件处理程序中的第一个参数应该是发布事件的小部件的句柄。 – eduffy 2012-01-10 19:32:46