文本不以等距离tkinter标签显示

2024-10-01 11:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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窗口和console窗口中的输出

enter image description here


Tags: 字符串textinfromimportgofortkinter
1条回答
网友
1楼 · 发布于 2024-10-01 11:38:07

这个问题有两种可能的解决办法

  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,以便在一行上正确对齐标签。因此,您还需要在此布局中放置按钮

相关问题 更多 >