使用pygtk.Window在窗口的任意部分点击事件

2 投票
1 回答
3182 浏览
提问于 2025-04-17 10:43

我正在使用pygtk和glade来制作一个简单的程序,目前这个程序的内容包括:

界面: 一个4x4的网格,每个格子里显示一个名字。 在网格下面有一个文本输入框。 这个程序是全屏运行的。

行为: 每个名字会在无限循环中“可选”10秒。“可选”意味着用户在屏幕上点击的地方,正好在这10秒计时的名字会被选中,并显示在文本输入框里。

我已经做了界面,但不知道怎么处理才能检测到屏幕上的点击。有没有人能帮帮我?

1 个回答

2

要检测屏幕上任何地方的点击,你可以为 button-press-event 连接一个回调函数。需要注意的是,这是一种 gdk 事件,你必须使用 add_events 方法将这个事件添加到事件掩码中。

下面这个小程序应该会对你有帮助:

import gtk

def callback(window, event):
    assert event.type == gtk.gdk.BUTTON_PRESS
    print 'Clicked at x={0}, y={0}'.format(event.x, event.y)

window = gtk.Window()
window.add_events(gtk.gdk.BUTTON_PRESS_MASK)
window.connect('button-press-event', callback)
window.connect('destroy', lambda w: gtk.main_quit())
window.show_all()

gtk.main()

撰写回答