是否可以在python中使用循环保存语法?
我想在tkinter中创建很多小部件。我目前正在为此使用大量代码。有没有办法总结代码?但是,我仍然希望能够捕获每个小部件的价值。 编号增加到200。。。 非常感谢 '''是否可以在python中使用循环保存语法?,python,tkinter,Python,Tkinter,我想在tkinter中创建很多小部件。我目前正在为此使用大量代码。有没有办法总结代码?但是,我仍然希望能够捕获每个小部件的价值。 编号增加到200。。。 非常感谢 ''' '不是每个IntVar和CheckButton的单个变量,而是定义一个dict来保存每个集合 import functools # Used later; see below keys = [f"A{i}" for i in range(1, 200)] self.calculations = {k:
'不是每个
IntVar
和CheckButton
的单个变量,而是定义一个dict
来保存每个集合
import functools # Used later; see below
keys = [f"A{i}" for i in range(1, 200)]
self.calculations = {k: tk.IntVar() for k in keys}
self.access_measures = {k: tk.Checkbutton(self.A_Frame_measure, text=k, variable=self.calculations[k]) for k in keys}
然后,您可以在access\u measures
字典上迭代调用grid
和bind
。网格
的大多数参数都是常量,除了可以通过枚举
计算的行
值之外。
棘手的部分是确保传递给bind
的回调实际上具有传递给enable\u measure\u specification
的当前值k
for r, (k, cb) in enumerate(self.access_measures.items(), start=2):
cb.grid(row=r, column=0, sticky="W", padx=25, pady=4)
cb.bind('<ButtonRelease-1>', functools.partial(self.enable_measure_specification, k))
对于枚举(self.access\u measures.items(),start=2)中的r,(k,cb):
cb.网格(行=r,列=0,粘滞=W,padx=25,pady=4)
cb.bind(“”,functools.partial(self.enable\u measure\u specification,k))
定义一个dict
来保存每个集合,而不是每个IntVar
和CheckButton
的单个变量
import functools # Used later; see below
keys = [f"A{i}" for i in range(1, 200)]
self.calculations = {k: tk.IntVar() for k in keys}
self.access_measures = {k: tk.Checkbutton(self.A_Frame_measure, text=k, variable=self.calculations[k]) for k in keys}
然后,您可以在access\u measures
字典上迭代调用grid
和bind
。网格
的大多数参数都是常量,除了可以通过枚举
计算的行
值之外。
棘手的部分是确保传递给bind
的回调实际上具有传递给enable\u measure\u specification
的当前值k
for r, (k, cb) in enumerate(self.access_measures.items(), start=2):
cb.grid(row=r, column=0, sticky="W", padx=25, pady=4)
cb.bind('<ButtonRelease-1>', functools.partial(self.enable_measure_specification, k))
对于枚举(self.access\u measures.items(),start=2)中的r,(k,cb):
cb.网格(行=r,列=0,粘滞=W,padx=25,pady=4)
cb.bind(“”,functools.partial(self.enable\u measure\u specification,k))
看起来不错,但我遇到了以下问题:name错误:name'functools'不是definedIt,它是标准库中的一个模块;你需要先导入,很好。但最后一件事:当我想调用该值(self.A1\u access\u measure\u calculation.get()==0)时,我得到以下错误消息:AttributeError:“Win1”对象没有属性“A1\u access\u measure\u calculation”,因为您不再有任何具有此类名称的属性。你有一个单键dict
,键为“A1”
,等等:self.calculations[“A1”]。get()==0
。你真好。关于如何总结If条件,您有什么建议吗?(我在上面的问题中插入了这个)看起来不错,但我遇到了以下问题:NameError:name'functools'不是definedIt,它是标准库中的一个模块;你需要先导入,很好。但最后一件事:当我想调用该值(self.A1\u access\u measure\u calculation.get()==0)时,我得到以下错误消息:AttributeError:“Win1”对象没有属性“A1\u access\u measure\u calculation”,因为您不再有任何具有此类名称的属性。你有一个单键dict
,键为“A1”
,等等:self.calculations[“A1”]。get()==0
。你真好。关于如何总结If条件,您有什么建议吗?(我已在上述问题中加入这一点)