def closer(event):
root.destroy()
root.bind("<F4>", closer)
如果我在单击另一个窗口时按F4,则没有响应,并且我必须在包含代码的程序窗口中单击F4,然后按F4进行操作。
我应该添加什么代码才能在其他窗口中关闭?我想使用另一个窗口中的快捷方式关闭程序。
从评论中,我知道您正在寻找一个绑定系统范围热键的解决方案。
这不可能直接通过tkintersbind
方法实现,您需要一个外部模块。有几种选择,例如
- pynput
- 系统热键
- PyHK
我只对system_hotkey
模块有个人经验。您可以通过添加以下代码来使用它。请记住,任何像这样添加的热键都会使其他程序无法访问该键。
import system_hotkey
hk = system_hotkey.SystemHotkey()
hk.register(['F4'], callback=closer)
下面演示了如何通过将一个无操作函数绑定到函数键来实现这一点,正如我在评论中所建议的那样。出于测试目的,我还添加了第二个事件处理程序函数,并将其绑定到F5,这将绑定和取消绑定F4from tkinter import *
UNBOUND, BOUND = 0, 1
root = Tk()
def closer(event):
print('closer called')
root.destroy()
def toggle_closer(event):
global state
print('toggle_closer called')
if state == BOUND:
root.bind("<F4>", lambda e: None)
print(' F4 unbound')
state = UNBOUND
else:
root.bind("<F4>", closer)
print(' F4 bound')
state = BOUND
root.bind("<F4>", closer)
state = BOUND
root.bind("<F5>", toggle_closer)
root.mainloop()
print('Terminated')
你也可以这样做:
def closer(event):
root.destroy()
root.unbind("<F4>")
unbind((方法从所选元素中删除事件处理程序。