我将尝试创建一个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://istack.dev59.com/WQClo.webp)
![Desired image](https://istack.dev59.com/hcTIQ.webp)
winfo_width
来获取其宽度,尽管在小部件实际显示在屏幕上之前,它通常会报告1x1。如果您想要一个正确的答案,请将其作为单独的问题提出--评论不是提供更好答案的正确位置。 - Bryan Oakley