【发布时间】:2016-12-06 13:32:41
【问题描述】:
它在 tkinter 中。最后一行将 x = len(FRAME_LIST) "Buttons" 添加到下拉菜单中。问题是它们都引用同一个框架(FRAME_LIST 中的最后一个)。如何让每个 Button 引用来自 FRAME_LIST 的不同帧?
for F in FRAME_LIST:
frame = ChallengePage(mainframe,self, F)
self.frames[F] = frame
frame.grid(row = 0, column = 0, sticky = "nsew")
subMenu1.add_command(label = F.id, command = lambda: self.show_frames(F))
编辑: 所以更准确地说,当我遇到这个问题时,我认为可以,问题是我需要声明一个局部变量,所以我尝试了这个:
A = F
subMenu1.add_command(label = F.id, command = lambda: self.show_frames(A))
但即使 A 在循环内声明并在每个循环中重新声明,它也不起作用,它仍然产生相同的结果。
它显示解决方案的位置:
subMenu1.add_command(label = F.id, command = lambda A = F: self.show_frames(A))
这以某种方式神奇地起作用,但我不明白为什么它与我当地的 A 有任何不同。
【问题讨论】:
标签: python-3.x loops user-interface tkinter