Я быстро создаю приложение для Ubuntu App Showdown в Python + Gtk. Я называю это Discvur. Я хотел бы включить некоторые сочетания клавиш.
Ища в Интернете, я нашел эту страницу о AccelGroup и эту страницу о gtk_widget_add_accelerator, но я не понимаю, как начать с него. Не могли бы вы сказать мне, как бы я определил соответствующий сигнал, а затем использовать его в моем приложении?
Ответы:
Вот некоторые фрагменты кода из одного из моих приложений Python + Gtk, дополнительно дополненные комментариями к этому ответу:
источник
self.add_accelerator(self.quick_add_entry, "<Control>l", signal="grab-focus") AttributeError: 'DiscvurWindow' object has no attribute 'quick_add_entry'
. Когда я пытаюсь найти в сети «quick_add_entry», я нигде не могу его найти. Вы уверены, что это правильная функция? Где я могу найти больше информации / учебник для этого? Кроме того, <Control> l означает Ctrl + l или это ошибочный тип?Вот код, который наконец заработал. Поскольку это сильно зависит от моей среды разработки Quickly + Glade + Python + Gtk, я делаю это независимым ответом. Ответ Брайса очень помог, как и мои обмены с aking1012 .
Фактический код в текстовом редакторе:
В Glade я создал GtkEntry с именем "entry1" в моем окне с именем "discvur_window". На вкладке «Сигналы» я дал сигналу «backspace» обработчик под названием «on_erasing».
Теперь, попав Backspaceили Ctrl+ Bделает терминал печать «Это работает.».
источник
Я переупаковал данные ответы в этой теме в отдельный пример:
Примечание: сигнал по умолчанию -
clicked
неactivate
потому , что приложения никогда не должны подключаться к::activate
сигналу, а использовать::clicked
сигнал Gtk.Button .источник
clicked
ускорителя пюре может быть очень быстрым, но кнопка визуально не нажимается. При использованииactivate
кнопка будет нажиматься, но акселератор может быть нажат только после того, как визуальное нажатие закончено.