没有GTK的GDK事件处理

时间:2011-06-23 15:25:05

标签: python glib gdk

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

谢谢。

2 个答案:

答案 0 :(得分:1)

您正在尝试连接key-press-event,这是一个gtk.Widget信号。 gdk.Window不会从gtk.Widget继承,因此它没有该信号。

在GTK文档中,标有“对象层次结构”的顶部附近的小部分告诉您这些类如何关联在一起。没有GDK教程这样的东西,因为没有GTK就很难使用它。我认为这样做也不是很有用。也许你可以详细说明你想要实现的目标?

答案 1 :(得分:1)

您可以使用gdk_event_handler_set设置事件处理程序(也是gtk使用的函数)。不知道使用哪个python绑定但我认为你可以很容易地找到相应的python函数。 (在gi中,它只是Gdk.Event.handler_set)

您可以查看here以获取示例(还有一个非阻止示例)。虽然他们在C。