2013-05-10 91 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)> 
這樣
相關問題