代码之家  ›  专栏  ›  技术社区  ›  Pontios

组合框架几何的Tkinter问题

  •  0
  • Pontios  · 技术社区  · 6 年前

    我有一个有两个元素的框架;即一个条目和一个按钮。

    class MyEntry(tk.Frame):
    def __init__(self, root, *args, **kwargs):
        super().__init__(root)
    
        self.var = tk.StringVar(self)
        self.var.trace("w", self.changed)
    
        self.entry = tk.Entry(self, textvariable=self.var)
    
        self.button = tk.Button(self, text='▼',command=lambda: self.changed('','','arrow'))
    

    我想要这个:

    What I want

    如果我使用地点:

    self.entry.place(relx=0,rely=0,relwidth=0.95,relheight=1)
    self.button.place(relx=0.95,rely=0,relwidth=0.05,relheight=1)
    

    我明白了:

    result with place()

    self.entry.pack(side='left')
    self.button.pack(side='right')
    

    result with pack()

    我将place()用于父小部件。我已经尝试了所有的选项组合(填充,扩展,传播等),但没有工作!!!

    任何帮助都将不胜感激!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Bryan Oakley    6 年前

    self.button.pack(side='right')
    self.entry.pack(side='left', fill="x", expand=True)
    

    顺序很重要,顺序也很重要 fill 条目的选项。

        2
  •  0
  •   Roland Smith    6 年前

    你想创建一个组合框吗?如果是这样,试着使用 ttk.Combobox

    关于放置小部件,我建议使用网格。就我个人而言,我倾向于用我想用的小部件绘制一个窗口的草图。然后在上面画一个网格。