проверить, какая кнопка нажата gtk3 с помощью python - PullRequest
0 голосов
/ 10 января 2012

У меня есть 10 кнопок, которые соответствуют тому же методу. Как я собираюсь проверить, какая кнопка была нажата в соответствующем методе? я попытался проверить, нажимается ли кнопка определенной кнопки в списке с помощью следующего кода, но я получил ошибку ошибки сегментации:

for i in range(0,10):
    if button_list[i].clicked():
        break
 break
#operation with respect to the button clicked

Ответы [ 2 ]

3 голосов
/ 07 ноября 2012

Вот пример кода , который иллюстрирует, зная, какая кнопка вызвала событие, используя метку кнопки:

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()

Так что вы можете просто проверить, что это за ярлык, и действовать соответствующим образом.

0 голосов
/ 10 января 2012

После того, как вы подключили все кнопки к одному и тому же обратному вызову, я предполагаю, что обратный вызов будет иметь такую ​​подпись: callback(button), где button - кнопка, которая испустила сигнал clicked.

Внутри этого обратного вызова должно быть легко проверить, какая кнопка была нажата, используя что-то вроде:

button_list.index(button)

Это вернет индекс кнопки внутри вашего списка.

...