Tkinter:无法使用 "width" 对齐标签和文本小部件

Tkinter : can not align Label and Text widgets using "width"

我正在尝试使用 Tkinter 创建一个简单的 table。但是标签和文本小部件没有水平对齐。例如,这是我的 Line_number 标签:

    Line_Number_label = Label(Frame_Label_Menu, text="N°", anchor="w", bg="#ffffff", width=3)
    Line_Number_label.grid(column=0, row=0, sticky=E+W)

这是我的文本标签,它获取用户在输入字段中输入的值:

    Text0 = Text(Frame_Text, height=1, width=3)
    Text0.grid(column=0, row=Line_number, sticky=E+W)
    Text0.insert("end", Line_number)

winfo.width() 函数 returns 在 Line_Number_label 上的长度为 30 像素,在 Text0 上的长度为 25 像素。我给所有小部件相同的警察和相同的大小:

    root.option_add("*Font", "Roboto 10")

出于某种原因,标签小部件的宽度总是比文本小部件稍长:

标签小部件似乎不像文本小部件那样根据字符数设置其尺寸(“宽度”)。还是我做错了什么?

以下代码确保您的列对齐。这只是一个包含 2 列的示例,但它可以扩展到更多列:

# Import requrired libraries/packages
from tkinter import Tk, Frame, X, Y, TOP, Label, Text, LEFT

# Create intance of tkinter
root = Tk(className = 'Python Examples - Window 0')
root.geometry("600x700")
root.resizable(0,0)

# Frame for whole table
frame_table=Frame(root, highlightthickness=0)
frame_table.pack(side=TOP,fill=X)

# Line number
Line_number=1

# 1st column
frame_col1 = Frame(frame_table, highlightthickness=0, width=3)
Line_Number_label = Label(frame_col1, text="N°", anchor="w", bg="#ffffff", width=3)
Text0 = Text(frame_col1, height=1, width=3)
Line_Number_label.pack(fill=X)
Text0.pack(fill=X)

# 2nd column
frame_col2 = Frame(frame_table, highlightthickness=0, width=20)
Line_Date_label = Label(frame_col2, text="Eingangsdatum", anchor="w", bg="#ffffff")
Text1 = Text(frame_col2, height=1)
Line_Date_label.pack(fill=X)
Text1.pack(fill=X)

# Packing of columns
frame_col1.pack(side=LEFT, fill=Y)
frame_col2.pack(side=LEFT, fill=Y)

root.mainloop()

我使用了 pack,因为我过去在使用 grid 时遇到过一些问题。这样的包装对我来说更稳重