gpt4 book ai didi

python - 如何添加按键绑定(bind)?

转载 作者:行者123 更新时间:2023-12-01 01:53:31 25 4
gpt4 key购买 nike

其他 stackoverflow 建议和任何其他外部文档都没有向我展示如何成功地将键绑定(bind)到函数。以下是我尝试过的链接(复制和粘贴的代码)但没有成功。我看到很多人建议将焦点作为失败的原因,就好像包含按钮的框架不是用户的目标,因此不是事件的;然而,这并没有产生什么结果。以下是我尝试过的链接:

http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

https://softwareengineering.stackexchange.com/questions/213935/why-use-classes-when-programming-a-tkinter-gui-in-python

python tkinter how to bind key to a button

http://www.java2s.com/Code/Python/GUI-Tk/SetButtontogetfocus.htm

How to bind a keypress to a button in Tkinter

我在 PyCharm 5.0.4 中运行 Python 3.6。

上面链接中的代码是我一直在使用/修改以查看其工作原理的代码,但没有一次尝试以执行操作结束。我收到的最远的是一条错误消息。

谢谢。

编辑:我在下面使用的代码(来自最近的链接)

from tkinter import *
root = Tk()

def LeftTurn(event):
print('left')
frame=Frame(root, width=100, height=100)
frame.bind("<Left>", LeftTurn) #Binds the "left" key to the frame and exexutes yourFunction if "left" key was pressed
frame.pack()


root.geometry("640x480")
root.title("Rover ")


root.mainloop()

我也尝试过这个(如下)

from tkinter import *

root = Tk()

def yourFunction(event):
print('left')

frame = Frame(root, width=100, height=100)

frame.bind("<Left>",yourFunction) #Binds the "left" key to the frame and exexutes yourFunction if "left" key was pressed
frame.pack()

root.mainloop()

最佳答案

所以你的框架需要以某种方式获得焦点才能使你的绑定(bind)工作。

采用下面的示例代码。如果单击测试按钮,焦点将设置为框架,您可以按左箭头键,您的函数将打印到控制台。如果您随后在输入字段内单击,焦点将移动到输入字段,并且您的绑定(bind)将不再起作用,直到框架再次获得焦点。

所以这对某些东西很有用,但我从来没有真正需要绑定(bind)到“框架”,而是绑定(bind)到根或顶层窗口或可以直接与键盘或鼠标交互的特定小部件,如 Entry 或 Text。

from tkinter import *


root = Tk()

def LeftTurn(event):
print('left')

frame=Frame(root)
Button(frame, text="test", command= frame.focus).pack()
Entry(frame).pack()

frame.bind('<Left>', LeftTurn)
frame.pack()

root.mainloop()

您可能希望绑定(bind)到 root 来代替此代码。无论您的根窗口中的哪个小部件被单击或在哪个框架中,这都将始终触发。

from tkinter import *


root = Tk()

def LeftTurn(event):
print('left')

frame=Frame(root)
Button(frame, text="Button").pack()

root.bind('<Left>', LeftTurn)
frame.pack()

root.mainloop()

关于python - 如何添加按键绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50494824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com