【发布时间】:2021-02-03 13:54:34
【问题描述】:
我正在运行一段简单的代码,它创建了一个小 tk 表格/窗口,要求用户输入客户的联系号码,我计划稍后使用它在数据库中搜索客户的详细信息(除了点)
我已经使用 .bind() 方法来跟踪用户何时按 Enter 接受数字输入,但为了我的爱,我似乎无法将参数传递给回调函数。
我的代码如下:谁能告诉我可能做错了什么(如果我尝试了各种修复尝试后的最新版本的许多最新版本的当前代码)
import tkinter as tk
def ClientNumberRequest():
def SearchForClient(event, fun_client_num):
search_numb = fun_client_num.get()
# Do some stuff with the search number
client_num_window = tk.Tk()
form_label = tk.Label(client_num_window, text="Please enter the client's
contact number")
form_label.grid(row=0, column=0)
client_num = tk.StringVar()
form_entry = tk.Entry(client_num_window, textvariable=client_num)
form_entry.grid(row=1, column=0)
form_entry.focus_set()
form_entry.bind("<Return>", lambda event, client_num:
SearchForClient(event, client_num))
只有在运行程序时按回车键后才会出现以下错误
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\27826\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1884, in __call__
return self.func(*args)
TypeError: <lambda>() missing 1 required positional argument: 'client_num'
【问题讨论】:
-
为什么要在 ClientNumberRequest 中添加 SearchForClient 函数。这是导致问题的原因
-
嗨 @JussPatelnoob - 查看您的评论并将 SearchForClient 功能移到外面,仍然出现相同的错误:
TypeError: <lambda>() missing 1 required positional argument: 'client_num' -
将
form_entry.bind("<Return>", lambda event, client_num: ...)更改为form_entry.bind("<Return>", lambda event: ...)。
标签: python tkinter callback arguments tkinter-entry