3

我正在编程(在 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 示例?

谢谢你。

4

2 回答 2

1

You can use gdk_event_handler_set to set the event handler (which is also the function used by gtk). Don't know which python binding u r using but I think you can easily find the corresponding python function. (In gi, it's simply Gdk.Event.handler_set)

You can check here for an example (There is also a non-block example). Although they are in C.

于 2012-02-05T11:37:49.700 回答
1

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

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

于 2011-06-23T21:26:52.343 回答