我在 Python 2.6 中使用 Tk 时遇到了问题。我有一个使用 Python 包装器从 xml 代码自动构建的 GUI。除了包含以下布局的部分之外,一切都很好:
第 1 行:[Label1] [Button1] [Frame1a[Label][Entry]] [Frame1b[Label][Entry]]
第 2 行:[Label2] [Button2] [Frame2a[Label][Entry]] [Frame2b[Label][Entry]]
问题是,由于某种原因,如果我在第 1 行的 Frame1a[Entry] 中输入一个值,我输入的数字也会被复制到第 2 行的 Frame2a[Entry]。对于第 1b/2b 帧也是如此。我在最初创建框架并使用小部件填充它们时检查了它们,它们都是单独的框架,唯一的链接元素是第一个参数 self.root。此外,我使用 frame.grid() 将它们添加到主窗口。
有谁知道这种情况何时发生?如果需要,我可以发布代码,尽管我不想这样做。我四处搜寻,但似乎没有其他人遇到过这个问题。
谢谢
编辑:发布一些代码
def new_frame_setup(self, name, options, row_idx=0):
label = tk.Label(self.root, text=name, font=("Helvetica", 16))
_master_frame = tk.Frame(self.root, borderwidth=1, relief="ridge")
for edit_idx in xrange(len(options)):
_sub_frame = tk.Frame(_master_frame, borderwidth=1, padx=5, relief="ridge"))
_sub_frame.grid(row=0, column=edit_idx)
tk.Label(_sub_frame, text=options[edit_idx][0]+options[edit_idx][1], width=5, font=("Helvetica", 16)).grid(row=0, column=2*edit_idx)
s = tk.StringVar()
s.set('%s' % (row_idx))
tk.Entry(_sub_frame, textvariable=s, text=options[edit_idx][2], width=10, font=("Helvetica", 12)).grid(row=0, column=2*edit_idx+1)
button = tk.Button(self.root, text='GoGoGo', font=("Helvetica", 12), command=None)
self._frame_layouts.append([label, _master_frame, button])