我正在尝试按下多个键,但是命令focus_set()仅使一个按钮可用,其余键不起作用。如果您单击该按钮,则该按钮有效,但是我想通过键盘使用该按钮,因此,我该怎么做,以便每个键都起作用

btnUp = tkinter.Button(master=None, text="Up", command=up)
btnUp.bind("w", up)
btnUp.focus_set()
btnUp.pack(side=tkinter.TOP, anchor=tkinter.W)

btnRight = tkinter.Button(master=None, text="Right", command=right)
btnRight.bind("d", right)
btnRight.focus_set()
btnRight.pack(side=tkinter.TOP, anchor=tkinter.W)

btnLeft = tkinter.Button(master=None, text="Left", command=left)
btnLeft.bind("a", left)
btnLeft.focus_set()
btnLeft.pack(side=tkinter.TOP, anchor=tkinter.W)

btnDown = tkinter.Button(master=None, text="Down", command=down)
btnDown.bind("s", down)
btnDown.focus_set()
btnDown.pack(side=tkinter.BOTTOM, anchor=tkinter.W)

最佳答案

您必须绑定到Buttons所在的小部件。为了获得最大的效果,请绑定到root。

btnUp = tkinter.Button(master=None, text="Up", command=up)
root.bind("w", up)
btnUp.pack(side=tkinter.TOP, anchor=tkinter.W)


如果您在该范围内无权访问root,则可以将其添加到顶部:

root = tkinter._default_root




请记住,Button命令回调和bind回调具有不同的签名,因此您需要使用可选的事件参数来定义函数,如下所示:

def up(event=None):
    # code

关于python - 如何在Tkinter中进行多个键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55191237/

10-12 20:43