在Tkinter中对齐嵌套网格布局中的条目

我有以下代码:

from tkinter import *


class GUI(Tk):
  def __init__(self,*args,**kw):
    super().__init__(*args,**kw)

    self.frame = Frame(self)
    self.frame.pack(fill=BOTH,expand=YES)

    row = 0
    self.source_lbl = Label(self.frame,text="Source:")
    self.source_lbl.grid(column=0,row=row,sticky='w')
    self.source_txt = Entry(self.frame,width=60)
    self.source_txt.grid(column=1,row=row)
    self.source_btn = Button(self.frame,text="Browse")
    self.source_btn.grid(column=2,row=row)

    row += 1
    self.extra_frame = ExtraFrame(self.frame)
    self.extra_frame.grid(row=row,columnspan=3,sticky='w')


class ExtraFrame(Frame):
  def __init__(self,**kw)
    self.pairs = []

    self.key_lbl = Label(self,text="Key",anchor='w')
    self.value_lbl = Label(self,text="Value",anchor='w')

    self.add_btn = Button(self,text="+",command=self.add_pair)
    self.add_btn.grid()

  def add_pair(self):
    pair_frame = KWFrame(self,pady=2)
    self.pairs.append(pair_frame)
    pair_frame.grid(row=len(self.pairs),columnspan=3)
    self.update_labels_and_button()

  def update_labels_and_button(self):
    if self.pairs:
      self.key_lbl.grid(column=0,row=0,sticky='w')
      self.value_lbl.grid(column=1,sticky='w')
    else:
      self.key_lbl.grid_remove()
      self.value_lbl.grid_remove()
    self.add_btn.grid(row=len(self.pairs) + 1)


class KWFrame(Frame):
  def __init__(self,**kw)

    self.key_txt = Entry(self,width=30)
    self.key_txt.grid(column=0,row=0)

    self.value_txt = Entry(self,width=30)
    self.value_txt.grid(column=1,row=0)

    self.remove_btn = Button(self,text="-",command=self.remove)
    self.remove_btn.grid(column=2,row=0)

  def remove(self):
    i = self.master.pairs.index(self)
    del self.master.pairs[i]
    for pair in self.master.pairs[i:]:
      pair.grid(row=pair.grid_info()['row'] - 1)
    self.master.update_labels_and_button()
    self.destroy()

gui = GUI()
gui.mainloop()

这可以很好地与添加/删除新的文本输入行一起工作,只有一个问题:标签“ Key”和“ Value”与这些行中的相应输入字段不对齐(尽管具有正确的列)值)。有没有简单的方法可以使用这样的嵌套网格布局很好地对齐它们?

z4521215 回答:在Tkinter中对齐嵌套网格布局中的条目

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3166017.html

大家都在问