如何使两个LabelFrame彼此对齐?

时间:2017-09-19 02:09:24

标签: python tkinter

我有两个tk.LabelFrame小部件,在宽度方面应该是相同的。我试图微调每个小部件(以及里面的小部件),但到目前为止没有任何结果。它要么太多,要么太少。例如,14太少,15太多,当然不接受14.5。

GUI

当前代码:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

material_label_frame = tk.LabelFrame(root)
material_label_frame.grid(row=0, column=0, sticky=tk.W)

material_label = ttk.Label(material_label_frame, text='Material:')
material_label.grid(row=0, column=0, padx=5, pady=5)

material_combobox = ttk.Combobox(material_label_frame, width=15, values=['Gold', 'Silver'])
material_combobox.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W)

weight_label_frame = tk.LabelFrame(root)
weight_label_frame.grid(row=1, column=0, sticky=tk.W)

weight_label = ttk.Label(weight_label_frame, text='Weight:')
weight_label.grid(row=0, column=0, padx=(5, 14), pady=5)

weight_entry = ttk.Entry(weight_label_frame, width=11)
weight_entry.grid(row=0, column=1)

weight_combobox = ttk.Combobox(weight_label_frame, width=3, values=['g', 'kg', 'oz'])
weight_combobox.grid(row=0, column=2, padx=(0, 5), pady=5, sticky=tk.W)

root.mainloop()

如果有人帮我克服了这个问题,我真的很感激。

2 个答案:

答案 0 :(得分:1)

使用sticky="ew"获取框架以填充列。如果两个帧都在同一列中,并且两个帧都使用相同的sticky值粘贴到列的两侧,则它们将精确对齐。

material_label_frame.grid(row=0, column=0, sticky="ew")
weight_label_frame.grid(row=1, column=0, sticky="ew")

答案 1 :(得分:0)

尝试使用地方功能代替网格功能。地方更复杂,但让你更准确地在你的设计界面。

像这样:

weight_entry = ttk.Entry(weight_label_frame,width = 11)

weight_entry.place(x = 10,y = 75,width = 120)