其他分享
首页 > 其他分享> > 在gtk.Window内部的任何地方捕获单击

在gtk.Window内部的任何地方捕获单击

作者:互联网

考虑以下python代码:

import gtk

class MainWindow():
    def __init__(self):
        self.window = gtk.Window()
        self.window.show()

if __name__ == "__main__":
    main = MainWindow()
    gtk.main()

我需要在此gtk.Window()内部的任何地方捕获点击.
我没有找到任何合适的事件(我也尝试了button-press-event,但是它不起作用),我想念什么?

谢谢!

解决方法:

您可以将gtk.EventBox打包到窗口中.通常,每当遇到捕获事件的麻烦时,请检查gtk.EventBox是否可以解决它们.

import gtk

class MainWindow():
    def __init__(self):
        self.window = gtk.Window()
        self.box = gtk.EventBox ()
        self.window.add (self.box)
        self.box.add (gtk.Label ('some text'))
        self.window.show_all()

        import sys
        self.box.connect ('button-press-event',
                          lambda widget, event:
                              sys.stdout.write ('%s // %s\n' % (widget, event)))

if __name__ == "__main__":
    main = MainWindow()
    gtk.main()

但是请注意,如果小部件自行处理事件,则向上传播小部件层次结构的事件将停止.例如,gtk.Button的父级不会从中接收点击事件.

标签:gtk,click,pygtk,events,python
来源: https://codeday.me/bug/20191106/1999348.html