gpt4 book ai didi

python - 减少 menu.add_command() 困惑/重复行

转载 作者:行者123 更新时间:2023-11-28 23:05:44 25 4
gpt4 key购买 nike

我想做以下事情(只是一个例子,真正的代码有更多的菜单和更多的 add_command):

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")

但是在更少的行上,事实上,如果可能的话,只有一行。我的菜单在我的程序中占用了大量空间,我想减少困惑。另外,我这个程序员看到了一堆类似的线条,觉得必须有办法减少它们。

我试过下面的代码没有用;我显然得到了一个名称错误,因为标签和状态没有定义......

for labeldic in [{label:"Cut"},{label:"Copy"},{label:"Paste"},{label:"Delete"}]: editmenu.add_command(labeldic+{state:"disabled"})

提前感谢您的任何建议!

最佳答案

这是你想做的翻译:

for labeldic in [{"label":"Cut"},{"label":"Copy"},{"label":"Paste"},{"label":"Delete"}]:
labeldic.update({"state": "disabled"})
editmenu.add_command(**labeldic)

我修复了三个问题。

首先是字典键如果是字符串需要加引号。如果你想要一个将字符串 'label' 映射到字符串 'cut' 的字典,你可以使用字典文字 {'label': ' cut'},或者可能使用 dict() 构造函数以这种方式扩展关键字参数:dict(label='cut')。正如您所发现的,{label: 'cut'} 不起作用,因为它尝试使用变量的值作为键,但没有这样的变量。

第二个是您不能使用 + 运算符合并字典。不幸的是,它不起作用。然而,有一个 update method这改变了它被调用的字典。由于它不返回合并的字典,因此不能像您使用 + 那样内联使用。

第三个问题是传递字典与传递关键字参数不同。 foo(bar='baz')foo({'bar':'baz'}) 不同,但foo(**{'bar':'baz'}) 相同。函数调用中的 ** 语法 "unpacks"一个包含关键字参数的字典。

尽管这是一种奇怪的风格。这是我会做的:

for label in ['Cut', 'Copy', 'Paste', 'Delete']:
editmenu.add_command(label=label, state='disabled')

关于python - 减少 menu.add_command() 困惑/重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com