如何关闭tkinter-gui中的快捷方式


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,这将绑定和取消绑定F4

from 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((方法从所选元素中删除事件处理程序。

最新更新