多个按钮在python Gtk中调用相同的功能

时间:2013-05-10 05:16:21

标签: python function button gtk

我正在使用Gtk-Python开发一个小应用程序,其中我有大约10到20个按钮,当点击它们中的任何一个时,我希望按钮的值被添加到我已经完成它的文本框中到目前为止

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

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

指定
button1._value=#something
...

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

通过这种方式,将按钮对象放在列表中,像这样调用它,

for button in buttonslist: 
    button.connect("clicked",button_function)

答案 1 :(得分: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)>