python - 如何在 tkinter python 的按钮小部件的命令属性中使用 lambda 表达式调用回调函数
问题描述
我使用 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, ...)
推荐阅读
- mongodb - Mongoose 文档类型声明
- python - 评估模型时出现“太多值无法解包(预期为 2)”错误
- python - 从 (1,2) pytorch 张量生成模型的置信度
- javascript - 如何将我的 API 密钥添加到此 URL 以成功获取?
- python - 使用 Python 替换字符串中的所有特定字符
- css - 为什么当光标在屏幕边缘时滚动条不可选?
- php - 如何在 Livewire 组件中使用 Laravel 请求
- python - 在 Pygame 的 Space Invaders 游戏中随着时间的推移添加更多敌人
- python - Django postgres迁移错误外键约束不存在
- python - Python:如何将辅助参数传递给嵌套函数?