python tkinter overrideredirect;无法接收击键(Linux)

时间:2011-05-04 15:53:41

标签: python tkinter

我有一个python tkinter应用程序,我想全屏运行。当我取消注释overrideredirect时,窗口管理器(Gnome,Linux)将无法再将键击转发给应用程序。

(fragment,python)

# make it cover the entire screen
w, h = master.winfo_screenwidth(), master.winfo_screenheight()
self.root.geometry("%dx%d+0+0" % (w, h))
self.root.focus_set() # <-- move focus to this widget
self.root.bind('<Escape>', self.root.quit())
#self.root.overrideredirect(True)

我找到了Tcl / Tk的window ::或包,它应该可以解决这个bug。我将如何安装它,是否可以在我的python应用程序中使用它?

http://www.binarism.com/tk/window/or/

http://www.binarism.com/tk/window-or-0.1.1.tgz

2 个答案:

答案 0 :(得分:3)

这适用于您使用overrideredirect获取全屏的用例,这有点常见:

#self.root.overrideredirect(1)
self.root.attributes('-fullscreen', True)

答案 1 :(得分:0)

执行绑定时,您可能希望输入可调用self.root.quit而不是self.root.quit()以避免调用该函数。当你按Escape时,将使用event参数调用callable(我知道我知道)。如果self.root.quit()不接受任何参数:使用lambda:self.root.bind('<Escape>',lambda e:self.root.quit())