【问题标题】:Text not displaying with equal distance tkinter label文本未以等距 tkinter 标签显示
【发布时间】:2020-08-20 10:44:54
【问题描述】:

当按下 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 窗口和控制台窗口中的输出

【问题讨论】:

    标签: python tkinter format label string-formatting


    【解决方案1】:

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

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

    【讨论】:

    • 修复缩进?
    • thankyouuuu 我能够操纵第二种方法来适应我的代码并且它有效!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多