我刚刚开始拼凑一个简单的工具,用于打开投影机并在其上选择一些预设。我是从命令行使用它,但后来认为这将是开始学习Tkinter的一个很好的借口。我正在努力使用OOP设计,因为很明显你可以用功能等来做到这一点。当我开始添加更多功能和按钮时,对每个按钮进行一次关闭功能的特定回调似乎有点疯狂。工程师如何处理这个问题?
答案 0 :(得分:2)
如果你有带有simillar函数的simillar按钮,你可以使用循环(for
)创建那些按钮,你可以使用一个具有不同参数的函数。您必须使用lambda
函数来调用带参数的函数。
(不完整)示例:
def my_func(a, b):
print a, b
Button("Hello", command=lambda arg1="abc",arg2=123:my_func(arg1, arg2)).pack()
Button("World", command=lambda arg1="xyz",arg2=987:my_func(arg1, arg2)).pack()
您甚至可以使用list来保留所有按钮的参数。
def my_func(a, b):
print a, b
buttons = (
# title, x, y, function name, function arguments)
("Hello", 0, 0, my_func, ("abc", 123)),
("World", 0, 1, my_func, ("xyz", 987)),
)
for btn in buttons:
title, x, y, func_name, func_args = btn
temp = Button(title, command=lambda func=func_name, args=func_args:func(*args) )
temp.grid(row=y, column=x)