【发布时间】:2013-05-19 19:52:20
【问题描述】:
我想设置一个对象的颜色,不想为每种颜色创建 10 个函数。 所以,我只想声明颜色并创建 10 个按钮和一个功能。错误信息是:
<lambda>() missing 1 required positional argument: 'green'
代码:
from tkinter import *
green=["#5bd575","#55c76d"]
#different colors should follow here
root=Tk()
Btn=Button(text="Trigger lambda", command=lambda green: printfunction(green))
Btn.pack()
def printfunction(colorset):
print(colorset)
它不需要是 lambda 函数,问题只是,如何通过单击按钮调用带有参数的 printfunction?
【问题讨论】:
-
我找到了一种方法,但它对我来说并不完全方便:command=self.start_set_color 函数,它为每种颜色(2 行)调用一个函数,该函数调用第二个通用函数“self. set_color"(获取颜色作为参数。但仍然不止一个函数
-
找到了一个解决方案,类似于 lambda 的第一个想法:command=lambda:set_color("green") 用于绿色按钮。只需在没有参数的情况下调用 lambda。感觉有点傻。
标签: python lambda parameter-passing