只有在Python

时间:2017-02-07 20:42:54

标签: python python-3.x user-interface button tkinter

我创建了一个名为get_data['name'].的函数 此函数获取一个字符串(例如'name'),输出是一个数字数组。

我用tkinter做了几个按钮,看起来像这样:

# A Button
A_Button = Button(GUI, image=A_Im, command=get_data('a_name'))
A_Button.grid(column=0, row=1)

# C Button
C_Button = Button(GUI,image=C_Im,command=get_data('c_name'))
C_Button.grid(column=0, row=2)

# D_Button
D_Button = Button(GUI, image=D_Im, command=get_data('d_name'))
D_Button.grid(column=0, row=3)

然而,当我运行代码时,它为每个按钮执行函数get_data,而我希望它只在我点击特定按钮时才能工作。

如何让它仅在点击时才能正常工作?

谢谢。

1 个答案:

答案 0 :(得分:0)

问题在于,您为Button的{​​{1}}参数分配值的方式将首先立即调用 command函数。这是因为您将其编写为常规函数调用。最后,您最终将实际函数调用的返回值分配给get_data的{​​{1}}参数。

相反,您需要确保将{em>函数(或通常,任何可调用对象)分配给command参数。这样可以确保它会被懒惰地评估,并且只在您实际点击按钮时调用。

一种简单的方法是将它包装在一个小的 lambda函数中,如下所示:

Button