Я пытаюсь создать макет Tkinter, в котором метки и поля ввода выровнены по вертикали между несколькими LabelFrame
блоками.
Вот несколько упрощенных кодов:
#!/usr/bin/python
from Tkinter import *
win = Frame()
win.grid(sticky=N+S+E+W)
frame_a = LabelFrame(win, text='Top frame', padx=5, pady=5)
frame_b = LabelFrame(win, text='Bottom frame', padx=5, pady=5)
frame_a.grid(sticky=E+W)
frame_b.grid(sticky=E+W)
for frame in frame_a, frame_b:
for col in 0, 1, 2:
frame.columnconfigure(col, weight=1)
Label(win, text='Hi').grid(in_=frame_a, sticky=W)
Label(win, text='Longer label, shorter box').grid(in_=frame_b, sticky=W)
Entry(win).grid(in_=frame_a, row=0, column=1, sticky=W)
Entry(win, width=5).grid(in_=frame_b, row=0, column=1, sticky=W)
win.mainloop()
Приведенный выше код создает окно, которое выглядит следующим образом:
![Incorrect image produced by above code](https://i.stack.imgur.com/WQClo.png)
Принимая во внимание, что я ищу способ выравнивания полей, чтобы окно выглядело примерно так (благодаря MS Paint):
![Desired image](https://i.stack.imgur.com/hcTIQ.png)
Я поигрался с in_
аргументами для grid()
, но не достиг очень многого, и я не могу придумать ничего другого, с чем можно было бы поэкспериментировать.