如何将 <"Return"> 键和按钮小部件绑定到 Tkinter 上的相同功能?
How can I bind the <"Return"> key and button widget to the same function on Tkinter?
我目前正在尝试制作一个 GUI,允许用户使用按钮或回车键 运行 我的程序。我试图弄清楚是否有一种方法可以使用按钮或按 Enter 来执行相同的功能,而不必分别为这两个操作重写相同的功能。 <"Return">, Enter, 键当前与我创建的输入字段绑定。键绑定和按钮都设置为执行相同的功能,但运气不好。这可能吗?也许有更好的方法来实现这一目标?以下是我目前所拥有的示例代码。请让我知道在这种情况下最好的选择是什么,我将不胜感激。谢谢
def but_test(entry):
print(entry)
H = 700
W = 925
root = tk.Tk()
canvas = tk.Canvas(root, bg="#8080ff", height = H, width = W)
canvas.pack(fill = "both", expand = True)
frame = tk.Frame(root, bg='brown', bd=10)
frame.place(relx= 0.08,rely=0.15,relwidth = 0.3, relheight=0.08)
entry = tk.Entry(frame, bg='white',relief = 'sunken')
entry.place(relwidth=0.6, relheight=1)
button = tk.Button(frame, text = "Button", bg='red', command=lambda:but_test(entry.get()))
button.place(relx=0.7,relwidth=0.3, relheight=1)
entry.bind("<Return>", but_test)
frame2 = tk.Frame(root, bg='yellow',bd=10)
frame2.place(relx= 0.1, rely = 0.4, relwidth=0.25, relheight=0.5)
label = tk.Label(frame2, bg='white')
label.place(relwidth=1,relheight=1)
root.mainloop()
您也可以在 bind()
中使用 lambda
:
entry.bind("<Return>", lambda e: but_test(entry.get()))
我目前正在尝试制作一个 GUI,允许用户使用按钮或回车键 运行 我的程序。我试图弄清楚是否有一种方法可以使用按钮或按 Enter 来执行相同的功能,而不必分别为这两个操作重写相同的功能。 <"Return">, Enter, 键当前与我创建的输入字段绑定。键绑定和按钮都设置为执行相同的功能,但运气不好。这可能吗?也许有更好的方法来实现这一目标?以下是我目前所拥有的示例代码。请让我知道在这种情况下最好的选择是什么,我将不胜感激。谢谢
def but_test(entry):
print(entry)
H = 700
W = 925
root = tk.Tk()
canvas = tk.Canvas(root, bg="#8080ff", height = H, width = W)
canvas.pack(fill = "both", expand = True)
frame = tk.Frame(root, bg='brown', bd=10)
frame.place(relx= 0.08,rely=0.15,relwidth = 0.3, relheight=0.08)
entry = tk.Entry(frame, bg='white',relief = 'sunken')
entry.place(relwidth=0.6, relheight=1)
button = tk.Button(frame, text = "Button", bg='red', command=lambda:but_test(entry.get()))
button.place(relx=0.7,relwidth=0.3, relheight=1)
entry.bind("<Return>", but_test)
frame2 = tk.Frame(root, bg='yellow',bd=10)
frame2.place(relx= 0.1, rely = 0.4, relwidth=0.25, relheight=0.5)
label = tk.Label(frame2, bg='white')
label.place(relwidth=1,relheight=1)
root.mainloop()
您也可以在 bind()
中使用 lambda
:
entry.bind("<Return>", lambda e: but_test(entry.get()))