为了账号安全,请及时绑定邮箱和手机立即绑定

使用 lambda 函数右击 Tkinter 中的赋值问题

使用 lambda 函数右击 Tkinter 中的赋值问题

胡说叔叔 2021-10-12 17:45:04
我有一个非常复杂的 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 循环不起作用。知道为什么吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信