我有两个tk.LabelFrame小部件,在宽度方面应该是相同的。我试图微调每个小部件(以及里面的小部件),但到目前为止没有任何结果。它要么太多,要么太少。例如,14太少,15太多,当然不接受14.5。
当前代码:
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()
如果有人帮我克服了这个问题,我真的很感激。
答案 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)