Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使两个LabelFrame相互对齐?_Python_Tkinter - Fatal编程技术网

Python 如何使两个LabelFrame相互对齐?

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

我有两个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()

如果有人帮我解决这个问题,我将不胜感激。

尝试使用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”只是一个例子。我不是在做这个项目,只是一个建议。对于给定的问题,我认为位置函数是解决问题的一种可能性,即使它很少见。我也在我的所有项目中使用了它,它工作得非常好()。事实上,这按我预期的方式解决了问题。谢谢你,先生。