我想做以下工作(只是一个示例,实际代码有更多的菜单和更多的add\u命令):
editmenu.add_command(label="Cut",state="disabled")
editmenu.add_command(label="Copy",state="disabled")
editmenu.add_command(label="Paste",state="disabled")
editmenu.add_command(label="Delete",state="disabled")
实际上,如果可能的话,只需要一行。我的菜单在我的程序中占用了相当大的空间,我想减少混乱。再加上我的程序员看到了一堆类似的行,觉得一定有办法减少它们。你知道吗
我尝试了下面的代码,但没有结果;我显然得到了一个nameberror,因为没有定义label和state。。。你知道吗
for labeldic in [{label:"Cut"},{label:"Copy"},{label:"Paste"},{label:"Delete"}]: editmenu.add_command(labeldic+{state:"disabled"})
提前感谢您的建议!你知道吗
以下是你想做的事情的翻译:
我解决了三个问题。你知道吗
首先,如果字典键是字符串,就需要引用它们。如果希望dict将字符串
'label'
映射到字符串'cut'
,可以使用dict literal{'label': 'cut'}
,也可以使用dict()
构造函数来实现,该构造函数以这种方式扩展关键字参数:dict(label='cut')
。正如您所发现的,{label: 'cut'}
将不起作用,因为它尝试使用变量的值作为键,但是没有这样的变量。你知道吗第二个是不能使用+运算符合并词典。不幸的是,它不起作用。然而,有一个update method会使它所调用的dict发生变异。因为它不返回一个合并的dict,所以不能像您使用+那样内联使用它。你知道吗
第三个问题是传递dict与传递关键字参数不同。
foo(bar='baz')
与foo({'bar':'baz'})
不同,但它与foo(**{'bar':'baz'})
相同。函数中的**
语法将"unpacks"字典调用为关键字参数。你知道吗不管怎样,这是一种奇怪的风格。下面是我要做的:
相关问题 更多 >
编程相关推荐