有没有更好的方法来处理 pygobject 中的双击

Is there a better way to handle double click in pygobject

我一直在使用以下方法来处理双击:

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

访问 private 属性 _2BUTTON_PRESS 感觉有点脏。有没有更好的方法来处理这个问题?

它不是私有的 属性:它是 C 枚举成员 GDK_2BUTTON_PRESS 的产物。 Python 不允许标识符以数字开头,所以在将 GdkEventType C 枚举中的符号 GDK_2BUTTON_PRESS 翻译成 Gdk.EventType Python 中的字段时 class, PyGOBject 需要转义 2BUTTON_PRESS 部分。

为了避免这种情况,GTK 引入了 GDK_DOUBLE_BUTTON_PRESS,正确翻译为 Gdk.EventType.DOUBLE_BUTTON_PRESS

同样的解释也适用于 GDK_3BUTTON_PRESS/GDK_TRIPLE_BUTTON_PRESS 枚举字段。