【发布时间】:2018-07-05 22:34:35
【问题描述】:
我有一个使用 tkinter 的 GUI,它有多组检查按钮。每组检查按钮由一个检查按钮列表组成,该列表与每个检查按钮的 tk.IntVar() 列表相对应。也就是说,对于复选按钮组“Alpha”,cbAlpha[3] 是复选按钮的一个示例,cbAlphaVar[3] 是其对应的 tk.IntVar()。
每个单独的复选按钮组都有自己的 (Un)Check-All 复选按钮,可以一次选择/取消选择该组的所有复选按钮。这些 (Un)Check-All 复选按钮中的每一个都有自己的单独功能(由其 checkbutton 命令调用)。
我的愿望是有一个函数(可以通过 checkbutton 命令调用),或者至少是一个简化的 lambda,可以用来检查/取消选中给定组中的所有检查按钮。
一般来说,我会有一个函数,它将(tk.IntVar()s 的)列表作为参数,并打开/关闭该列表的每个元素。但是我不能在 checkbutton 命令中指定一个参数,所以每个都有自己的功能......这会导致冗余代码。我无法确定一个结构,它允许我只使用单个函数,或者至少在命令中使用一个自包含的 lambda。
举个简单的例子,假设我有两组检查按钮:Alpha 和 Bravo。我在alphaCbs[] 中有 tk.Checkbutton() 列表,在 alphaCbVars[] 中有相应的 tk.IntVar() 列表。 bravoCbs[] 和 bravoCbVars[] 也是如此。 Alpha 组有一个 (Un)Check-All 复选按钮,如下所示:
allAlphaCbVar = tk.IntVar()
allAlphaCb = tk.Checkbutton(root, text='Alpha', variable=allAlphaCbVar, command=allAlpha)
对应的功能:
def allAlpha():
for eachVar in alphaCbVars:
eachVar.set(allAlphaVar.get())
我对 Bravo... 和 Charlie... 和 Delta... 等也有类似的功能。所以不必要的多余。关于在命令中组合成单个函数或 lambda 的任何建议? 谢谢!
【问题讨论】:
-
听起来你需要上课。向我们展示minimal reproducible example,我们将从那里开始。
标签: python python-3.x tkinter