我有一個非常復雜的 Tkinter GUI,因此使用 lambda 函數避免重復分配控件的工作是值得的。這里的代碼摘錄: def createRightMenu(self, treeName, commands: []): for cmd in commands: self.rightMouse[treeName].add_command(label= cmd['label'], command= lambda: self.execCommand(cmd['reqId'])) self.tree[treeName].bind("<Button-3>", lambda event: self.rightMouse_click(event.x_root, event.y_root, treeName)) def execCommand(self, reqId): print("execCommand", reqId) self.tree = {} treeName = 'a' self.createTree(root, treeName) self.createRightMenu(treeName , [ {'label': 'copy', 'reqId': 1}, {'label': 'retrieve', 'reqId': 2}, ])有什么作用?在我的右鍵菜單中,我得到條目“復制”和“檢索”,并調用了 execCommand。什么不起作用?execCommand 始終獲取最后一個列表元素,即 'retrieve', 2 作為參數,即使我右鍵單擊 'copy'。如果我手動添加兩個 .add_command 一切都很好。僅使用 for 循環不起作用。知道為什么嗎?
添加回答
舉報
0/150
提交
取消