Python 如何使两个LabelFrame相互对齐?
我有两个tk.LabelFrame小部件,在宽度方面应该相等。我试图对每个小部件(以及其中的小部件)进行微调,但到目前为止没有任何效果。要么太多,要么太少。例如,14太少,15太多,14.5不被接受(当然) 当前代码:Python 如何使两个LabelFrame相互对齐?,python,tkinter,Python,Tkinter,我有两个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, c
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()
如果有人帮我解决这个问题,我将不胜感激。尝试使用place函数,而不是grid函数。位置更复杂,但可以让您更精确地显示在设计界面中 像这样: 重量\u条目=ttk.条目(重量\u标签\u框架,宽度=11) 重量输入。放置(x=10,y=75,宽度=120)使用
sticky=“ew”
获取框架以填充列。如果两个框架位于同一列中,并且都使用相同的粘性值粘贴到列的两侧,则它们将精确对齐
material_label_frame.grid(row=0, column=0, sticky="ew")
weight_label_frame.grid(row=1, column=0, sticky="ew")
当你说“14太多了”,14什么?衬垫?宽度?很抱歉,我并没有特别想到一件事,14也可以是任何数字。我尝试过改变填充和宽度,但没有成功。有一件事我没有真正想到的是使用tk.W+tk.E(尽管我经常在GUI中使用它),所以再次感谢您的帮助。您如何知道120的宽度是正确的宽度?place的问题是,您需要知道正在使用的字体的大小,并且可能还需要知道分辨率<代码>位置
很少是正确的选择。“宽度=120”只是一个例子。我不是在做这个项目,只是一个建议。对于给定的问题,我认为位置函数是解决问题的一种可能性,即使它很少见。我也在我的所有项目中使用了它,它工作得非常好()。事实上,这按我预期的方式解决了问题。谢谢你,先生。