Python GTK + 3 (PyGtk + 3) - запуск события вручную - PullRequest
0 голосов
/ 02 мая 2020

Я хотел бы удалить мигающий курсор из поля ввода после того, как пользователь нажал клавишу «Ввод».
Я думаю, что правильный способ - вызвать событие фокусировки (см. Следующие ссылки).
- Gtk.Widget - do_focus_out_event (событие)
- EventFocus

Это пример кода. Я перепробовал много вариантов, а также систематически искал Inte rnet, но не смог найти решение.

class MySoftware(Gtk.Window):

    def __init__(self):
        # Create a new window
        ...

        entryField.connect("activate", self.on_entry_activated)

    #This function is called when the user hits the "Enter" key in the entry widget 
    def on_entry_activated(self, entry):
        entryContent = entry.get_text()
        # Here I would like to trigger the focus-out event
        event = Gdk.EventFocus()
        event.window = entry.get_window()
        event.send_event = True
        event.type = Gdk.EventType.FOCUS_CHANGE
        event.in_ = False
        entry.do_focus_out_event(self, event)

win = MySoftware()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

Этот конкретный код вызывает ошибку ошибки сегментации. Другие варианты этого кода возвращают ошибку типа («... ожидается Gdk.EventFocus() ...»)

...