Python 如何使Bind和Command在tkinter中执行相同的操作?
我有一个带有输入字段和验证按钮的tkinter GUI。我希望在按下条目中的键或单击按钮时调用相同的函数 问题是,使用条目上的bind方法时,我需要一个“self”参数才能使函数工作,但不能使用按钮 以下是简化代码:Python 如何使Bind和Command在tkinter中执行相同的操作?,python,tkinter,bind,tkinter-entry,Python,Tkinter,Bind,Tkinter Entry,我有一个带有输入字段和验证按钮的tkinter GUI。我希望在按下条目中的键或单击按钮时调用相同的函数 问题是,使用条目上的bind方法时,我需要一个“self”参数才能使函数工作,但不能使用按钮 以下是简化代码: from tkinter import * import tkinter.messagebox import tkinter.filedialog def function(): print("Here are some words.") my_window = Tk
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
def function():
print("Here are some words.")
my_window = Tk()
text = StringVar()
input_widget = Entry(my_window, textvariable = text) #We create an input widget.
input_widget.bind("<Return>", function)
benjamin = Button(my_window, text ='Print', command = function) #We create another widget, a
# button that sends the same function as pressing <Return> key.
input_widget.grid(row = 0, column = 0) #We use grid to place our widgets.
benjamin.grid(row = 0, column = 1)
my_window.mainloop()
我可以通过调用两个函数使其工作,一个用于按钮,另一个用于带有自参数的条目:
def function2(self):
print("It works with this function.")
有没有办法使
.bind
和command
共享同一个函数?您可以编写函数,使其包含任意数量的参数:
def function(*args):
#args is now a tuple containing every argument sent to this function
print("Here are some words.")
现在,您可以使用0、1或任何其他数量的参数成功调用该函数
或者,您可以保持函数不变,并使用lambda丢弃未使用的
self
值:
input_widget.bind("<Return>", lambda x: function())
input_widget.bind(“,lambda x:function())
将此项添加到您的绑定中:
input_widget.bind("<Return>", lambda event: function())
input\u widget.bind(“,lambda事件:function())
事件绑定都需要自动传递给函数的事件参数。通过将lambda与参数事件一起使用;您可以接受这个“事件”变量,基本上放弃它,然后执行
function()中的任何操作。
问题越长,答案越短。感谢您以如此快速高效的方式回答!对我来说,第一个解决方案是好的,然而,问题是通过的事件,而不是自我;没有使用任何类。self不需要调用函数,它只是接收从绑定传递的“事件”。
input_widget.bind("<Return>", lambda event: function())