在调试一个python程序,目的是根据配置自动生成一个菜单,菜单只有一项,如果这个配置打开,就要创建它,并把它加入到一个现成的菜单中,比如加入到“编辑”中。
本文说的问题,其实和这个菜单没啥关系,只是加这菜单时,我遇到了问题,代码逻辑如下的样子:
def addActions(self, wid, acts):
for action in acts:
if action is None:
wid.addSeparator()
else:
wid.addMenu(action)
def AddMenuss(self):
# mEdit 是一个 self.menuBar().addMenu("编辑")
mnlist = (None, self.mDelP, self.mAddP)
addActions(self.mEdit, mnlist)
mnlist = (self.shortSwitch)
self.addActions(self.mEdit, mnlist)
这里我们不说具体mDelP、mAddP、shortSwitch究竟是啥(实际上是一个菜单项^-^),我要探究的是mnlist。
最后两行我是仿照它前面的两行写的,很简单,就是把新的菜单项加入到mnlist之后,通过调用addActions()再把它们加入到mEdit菜单项中。
看上去两者除了数量不同之外,写法没有区别,但是在运行的时候,却挂在了最后一行 addActions()的:
for action in acts:
这一行上,多次尝试都是一样,我把mnlist也加了一项:
mnlist = (None,shortSwitch)
这次顺利通过,这样看,是数量不能为1!这有点奇怪呀,怎么可能数量至少是2呢?我再改改试试,因为之前用到列表都是用[]来表示的:
mnlist = [shortSwitch]
然后再运行程序,通过!
这样看来,应该坚持用[]来表示列表,以明确的标示来表示列表是好的习惯。