2013-05-10 105 views
0

我正在开发一个使用Gtk-Python的小应用程序,其中有10到20个按钮,当它们中的任何一个被点击时,我希望按钮的值为附加在文本框中我已经完成了迄今为止通过在python中调用相同函数的多个按钮Gtk

button1.connect("clicked",button_function) 
button2.connect("clicked",button_function) 
... 

所有的功能。这是做这件事的唯一方法吗?还是有一种优雅的方式?而按钮的价值是由

button1._value=#something 
... 

任何人都可以帮助我吗?

+1

,通过在列表中的按钮对象,像这样调用它,'对于buttonslist中的按钮:button.connect(“clicked”,button_function)' – 2013-05-10 05:22:50

+0

但是不会一次调用所有按钮的功能吗? – 2013-05-10 06:12:38

+0

你只是绑定了单击事件的功能,你可以随时随地拨打任何按钮。 – 2013-05-10 06:27:05

回答

2

通过这种方式,把按钮对象列表中,这样称呼它,

for button in buttonslist: 
    button.connect("clicked",button_function) 
0
import sys,os 
import pygtk, gtk, gobject 

class GTK_Main: 
    def __init__(self): 


    window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
    window.set_title("Test") 
    window.set_default_size(500, 400) 
    window.connect("destroy", gtk.main_quit, "WM destroy") 

    hbox_eq = gtk.HBox() 

    buttonlist = [] 

    for i in [1,2,3,4,5,6,7,8,9]: 
     b = gtk.Button(str(i)) 
     b.set_name("YOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!") 

     buttonlist.append(b) 
     hbox_eq.pack_start(b, True, True, 0) 

    for button in buttonlist: 
     print button 
     #print button.get_label() 
     #print button.get_name() 

    window.add(hbox_eq) 
    window.show_all() 

    def exit(self, widget, data=None): 
    gtk.main_quit() 


GTK_Main() 
gtk.gdk.threads_init() 
gtk.main() 

输出:

<gtk.Button object at 0x25d8370 (GtkButton at 0x24348e0)> 
<gtk.Button object at 0x25d83c0 (GtkButton at 0x24349a0)> 
<gtk.Button object at 0x25d8410 (GtkButton at 0x2434a60)> 
<gtk.Button object at 0x25d8460 (GtkButton at 0x2434b20)> 
<gtk.Button object at 0x25d84b0 (GtkButton at 0x2434be0)> 
<gtk.Button object at 0x25d8500 (GtkButton at 0x2434ca0)> 
<gtk.Button object at 0x25d8550 (GtkButton at 0x2434d60)> 
<gtk.Button object at 0x25d85a0 (GtkButton at 0x2434e20)> 
<gtk.Button object at 0x25d85f0 (GtkButton at 0x2434ee0)> 
这样
相关问题