文本不显示等距 tkinter 标签

Text not displaying with equal distance tkinter label

当按下 go 按钮时,10 个 tkinter 标签显示两个字符串,并且所有 10 个标签在两个字符串之间的距离必须相等。

出于某种原因,space 不相等,但奇怪的是,如果我在控制台中打印字符串,它们都相等 space

from tkinter import *
import tkinter
from random import randint

root = tkinter.Tk()
root.geometry('700x700')
def go():
        for label in container:
            stringa = ('A' * randint(5, 10))
            stringb = ('B' * randint(10, 15))
            label.configure(text=((stringa.ljust(30) + stringb)))


global container
container = []

for count in range(10):
    tkinterlabel = Label(root, text='hi',anchor=NW)
    tkinterlabel.pack(anchor='nw')
    container.append(tkinterlabel)

Button(root, text='go', command=lambda: go()).pack()

这是在 tkinter window 和控制台 window

中的输出

这个问题有两种可能的解决方案。

  1. 使用固定字体,例如“Courier New”或“Lucida Console”来显示您的标签。然后,空白将具有与字母相同的宽度,并且您的列将像在控制台中一样对齐。
  2. (推荐)使用两列标签来显示您的数据。

第二种方法可以通过在元组中为每个标签添加两个标签并将函数更改为:

def go():
        for label in container:
            stringa = ('A' * randint(5, 10))
            stringb = ('B' * randint(10, 15))
            label[0].configure(text=stringa)
            label[1].configure(text=stringb)

for count in range(10):
    l1 = Label(root, text='hi')
    l1.grid(row=count,column=0,sticky=W)
    l2 = Label(root, text='hi')
    l2.grid(row=count,column=1,padx = 20,sticky=W)
    
    container.append((l1,l2))

Button(root, text='go', command=lambda: go()).grid(row=12,column=0,sticky=W)

编辑:我将布局更改为 .grid 以在一行上正确对齐标签。因此,您还需要将按钮放在此布局中。