Как связать события нажатия кнопки GTK3 с обратными вызовами

Итак, я разрабатываю свое первое приложение на GTK3, и я не знаю, как связать мои кнопки с их соответствующими определениями. Может кто-нибудь опубликовать учебник, пример или несколько документов?

Использование следующих вещей для разработки моего приложения:

  • Ubuntu 12.04 LTS полностью обновлен
  • Python 2.7.3
  • Очевидно, GTK + 3
  • Glade 3.12.1

Приложение, которое я разрабатываю, - Virtuam (кандидат на App Showdown !)

0
задан 20 June 2012 в 11:56

1 ответ

Взгляните на этот пример о том, как подключить события к обратным вызовам в Gtk 3 и Python. Короче говоря, Вы используете connect() метод для соединения имени сигнала (который испускается, когда событие, такое как нажатие кнопки имеет место) к обратному вызову, который является функцией, которая обработает событие.

def __init__(self):
    # Other initialization code

    # We create a button
    self.button = Gtk.Button(label="Click Here")
    # We connect the 'clicked' signal to the callback
    self.button.connect("clicked", self.on_button_clicked)

def on_button_clicked(self, widget):
    # This function will be called whenever the user presses the button
    print "Hello World"

Можно также посмотреть Вводное видео Семинара Gtk3, которое является частью Откровенного обмена мнениями Приложения Ubuntu.

При использовании Поляны необходимо будет сделать, чтобы удостовериться что on_<name-of-your-button>_clicked() обратный вызов определяется в коде как метод Вашего окна.

Если Вы используете Быстро, это - все, о чем необходимо будет волноваться.

Иначе необходимо будет вручную подключить сигнал к обратному вызову. У Вас есть две опции:

  • Сделайте это в коде с self.builder.get_object('name-of-your-button').connect() - принятие builder название Вашего Gtk.Builder() в котором Вы загрузили свою Поляну UI.
  • Сделайте это с Поляной, смотрящей на свойства Вашей кнопки, выбрав вкладку сигналов и затем написав имя Вашего обратного вызова в 'нажатом' сигнале.
6
ответ дан 20 June 2012 в 11:56

Другие вопросы по тегам:

Похожие вопросы: