我正在创建一个冒险游戏,我想把alt+a绑定到我的回调中。它做不到我想要的,所以我有两个问题:
代码如下:
import tkinter as tk
dw = tk.Tk()
dw.title('Hearts')
def play(event):
print('This is the test.')
areal = tk.Frame(master=dw, width=1200, height=600, bg='blue')
areal.pack_propagate(0)
areal.pack(fill=tk.BOTH, expand=bool(dw))
areal.bind("<Alt-A>", play)
dw.mainloop()
它不会给我一个错误,但是当我点击框架然后按alt+a时它什么也不会做。这里有什么问题?在
编辑:
^{pr2}$这是完整的代码。在
你可以绑定到任何你想要的小部件。但是,如果绑定键事件,则只有当小部件具有焦点时,绑定才会起作用。默认情况下,除了
Entry
和Text
之外的大多数小部件都不会获得焦点,除非您显式地将焦点设置为它们。在注意:一次只能有一个小部件具有键盘焦点。在
您还可以设置根窗口的绑定,这将导致无论哪个窗口小部件具有焦点都会触发它。在
有关如何处理键绑定的更彻底的解释,请参阅以下答案:https://stackoverflow.com/a/11542200/7432
它的工作方式不像你期望的那样,因为绑定在一个框架小部件上,但是这个小部件没有键盘焦点。你可以用这样的方法来集中注意力:
或者,只有在单击帧后,通过在鼠标单击上创建绑定,才能使其成为焦点:
^{pr2}$注意:您绑定的是大写字母“a”,因此在测试时请确保您按下的是control-alt-a
您需要绑定到
dw
,而不是框架。在所以,你可以做
dw.bind("<Alt-A>", play)
。在一个小提示,
Alt-A
将按预期绑定到大写A,因此您必须单击键盘上的Alt+Shift+A
。在键盘上执行Alt+A
操作将不起作用,您必须绑定到Alt-a
才能使其工作。在主窗口有键盘焦点。或者,也可以将绑定保留在帧上,只需执行
areal.focus_set()
将焦点设置到帧上。在相关问题 更多 >
编程相关推荐