Есть ли лучший способ обрабатывать двойной щелчок в pygobject - PullRequest
1 голос
/ 31 января 2020

Я использовал следующее для обработки двойного щелчка:

    def do_button_press_event(self, eb: Gdk.EventButton):
    if eb.type == Gdk.EventType._2BUTTON_PRESS:
        # todo: code double click
        pass

Доступ к частному свойству _2BUTTON_PRESS кажется немного грязным. Есть ли лучший способ справиться с этим?

1 Ответ

1 голос
/ 02 февраля 2020

Это не частная собственность: это артефакт члена перечисления C, являющегося GDK_2BUTTON_PRESS. Python не позволяет идентификаторам начинаться с цифры, поэтому при переводе символа GDK_2BUTTON_PRESS в перечислении GdkEventType C в поле класса Gdk.EventType Python PyGOBject должен экранировать 2BUTTON_PRESS part.

Чтобы избежать этого, GTK ввел GDK_DOUBLE_BUTTON_PRESS, который правильно переводится как Gdk.EventType.DOUBLE_BUTTON_PRESS.

То же самое объяснение также применимо к полям перечисления GDK_3BUTTON_PRESS / GDK_TRIPLE_BUTTON_PRESS .

...