【问题标题】:GDK events handling without GTK没有 GTK 的 GDK 事件处理
【发布时间】:2012-02-05 20:59:24
【问题描述】:

我正在编程(在 python 中)没有 GTK 的 GDK,只是作为 x11 抽象。这篇文章是我最后的机会。

我的问题是我不知道如何捕获 GDK 窗口的信号/事件或它们的名称。

当我这样做时:

window = gdk.Window(
            gdk.get_default_root_window(),
            width=400,
            height=200,
            window_type=gdk.WINDOW_CHILD,
            wclass=gdk.INPUT_OUTPUT,
            event_mask=gdk.KEY_PRESS_MASK | gdk.MOTION_NOTIFY | gdk.EXPOSURE_MASK)

window.connect("key_press_event", on_key)

我明白了:

unknown signal name: key_press_event

GTK 和 PYGTK 引用只讨论类、函数和常量,但没有提及它们的相互关系,因此它们没有帮助。 是关于 glib 主循环吗?

我需要一些例子。任何好的GDK教程或源代码?任何用于捕获 GDK 信号的 glib.MainLoop 示例?

谢谢。

【问题讨论】:

  • Noctis Skytower,非常感谢。

标签: python glib gdk


【解决方案1】:

您可以使用gdk_event_handler_set 来设置事件处理程序(这也是gtk 使用的函数)。不知道您使用的是哪个 python 绑定,但我认为您可以轻松找到相应的 python 函数。 (在gi中,就是简单的Gdk.Event.handler_set)

您可以查看here 的示例(还有一个非阻塞示例)。虽然它们在 C 中。

【讨论】:

    【解决方案2】:

    您正在尝试连接到key-press-event,这是一个gtk.Widget 信号。 gdk.Window 不继承自 gtk.Widget,所以它没有那个信号。

    在 GTK 文档中,靠近顶部标记为“对象层次结构”的小部分告诉您这些类是如何相互关联的。没有真正意义上的 GDK 教程,因为没有 GTK 就几乎不会使用它。我认为这样做也不是很有用。或许您可以详细说明您想要达到的目标?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多