在調試一個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]
然後再運行程序,通過!
這樣看來,應該堅持用[]來表示列表,以明確的標示來表示列表是好的習慣。