我使用 tkinter 创建了一个 gui,在其中创建了一个带有 Toplevel 小部件的新窗口,并将小部件添加到该窗口,例如输入框、标签和按钮小部件。按钮小部件的命令属性使用 lambda 表达式调用回调函数,以便在执行此回调函数之前 gui 不得继续操作。但是,由于一些问题,当我按下按钮小部件时,回调函数没有被调用。
def toplevel_widget(obj):
def suppress():
try:
if obj.fillna_value.get():
fill_na_value_window.withdraw()
else:
raise Empty_na_value_entry_Error("The textbox can't be left empty!!\nFill any data in it.")
except Empty_na_value_entry_Error as e:
msgbox.showerror("Error",e.msg)
fill_na_value_window=tk.Toplevel(obj)
obj.fillna_value=tk.StringVar()
tk.ttk.Label(fill_na_value_window,text="Enter the value to be inserted").grid(row=1,column=0,padx=10,pady=10)
tk.ttk.Entry(fill_na_value_window,textvariable=obj.fillna_value,width=15).grid(row=1,column=1,padx=10,pady=10)
tk.ttk.Button(fill_na_value_window,text="Ok",command=lambda : suppress,width=10).grid(row=2,columnspan=2)
Cleanser_manual.fillna_toplevel_widget(obj)
val=obj.fillna_value.get()
print("Value : ",val) #here **Value : is printed on screen**
这里即使单击按钮后也不会调用suppress()函数
最佳答案
您没有在 lambda 函数内调用 supress,您错过了括号
(..., command=lambda: supress(), ...)
在任何情况下,你根本不需要 lambda,你可以将 supress 函数作为参数传递
(..., command=supress, ...)
关于python - 如何在 tkinter python 中的按钮小部件的命令属性中使用 lambda 表达式调用回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170932/