Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在python中使用循环保存语法?_Python_Tkinter - Fatal编程技术网

是否可以在python中使用循环保存语法?

是否可以在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:

我想在tkinter中创建很多小部件。我目前正在为此使用大量代码。有没有办法总结代码?但是,我仍然希望能够捕获每个小部件的价值。 编号增加到200。。。 非常感谢

'''


'

不是每个
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条件,您有什么建议吗?(我已在上述问题中加入这一点)