使用pygtk.Window在窗口的任意部分点击事件
我正在使用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()