单击数字将其输入到条目小部件上时,它总是添加 10 而不是应该添加的数字

On clicking the numbers to input it onto the entry widget, it always adds 10 rather than the number supposed to

for i in range(1,4):
    for j in range(3):
        button = tk.Button(text=str(num+1),master=window,padx=40,pady=20,command=lambda:button_click(num+1))
        button.grid(row=i,column=j)
        num+=1


def button_click(Number):
    ent_number.insert(tk.END,Number)

每当我单击任何按钮时,它都会显示相应的数字,即 1、2、3 等。它总是将 10 插入条目小部件。

您可以通过将 num 作为默认参数轻松解决您的问题:

lambda num=num: button_click(num)

为什么这样做?

函数中的pre-defined变量可以是参数也可以是全局变量。优先选择函数参数。

例如,如果你执行下面的代码,它会打印出 10,而不是 6。

def func(num):
    print(num)
    
num = 6
func(10)

在您的代码中,当您使用 lambda:button_click(num+1) 时,num 被视为全局变量,并且 num 的值始终为 10,而不管哪个按钮触发了事件。

但是,当 num 作为参数传递时,参数值不会随着循环的迭代而改变。执行函数时,会考虑num的参数值,这取决于源按钮。