【问题标题】:Python/Tk: Entry widgets in frames on separate rows are linkedPython / Tk:单独行上的框架中的条目小部件被链接
【发布时间】:2013-03-04 10:45:41
【问题描述】:

我在 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])

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    如果生成的代码将相同的变量分配给两个或多个条目小部件的textvariable 属性,就会发生这种情况。

    【讨论】:

    • 我实际上没有为 Entry 小部件定义 textvariable。我只是尝试通过每次创建一个新的 StringVar() 并为其分配一个唯一的编号,但它仍然会发生。我会发布一些代码,也许有人会发现一个明显的错误。
    • Bryan,您实际上是对的(我相信您知道!)。我使用text 参数的事实覆盖了textvariable 的使用,当我检查xml 代码时,我确实分配了相同的数字。删除 text 参数解决了这个问题。谢谢!
    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多