调整tkinter标签中的文本以占用所有可用空间

2024-09-30 08:28:12 发布

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

希,我希望你们都做得很好。我正在用PythonTkinter构建一个眼图软件,该软件由光电图组成。 在视力表中,所有字母表都直接位于彼此的下方。但当我尝试在tkinter中添加标签时,它会形成V形,因为每行的字体大小都在减小。 我想占据标签上所有的可用空间

我使用 mainFrame.rowconfigure(0, weight=1)成功地做到了这一点,但它只会使标签变为全宽,而不会使其内部的文本变宽。我附上了一个截图,看看它是什么样子。 enter image description here 在屏幕截图中,您可以看到标签设置为屏幕全长,但文本为V形,因为字体大小从上到下逐渐减小。 是否有一种方法可以将文本锚定到全宽。换句话说,每个字母表都应该直接位于上面一个字母表的下方

我希望我说的很清楚,如果你还需要知道什么,请告诉我


Tags: 文本软件屏幕tkinter空间标签字母表字体大小
1条回答
网友
1楼 · 发布于 2024-09-30 08:28:12

If an image or bitmap is being displayed in the label then the value is in screen units; for text it is in characters.

若要为不同大小的字体占用相同的空间,请尝试使用图像模式并使用空图像

import tkinter as tk
from tkinter.font import Font

texts = ('EDFHT', 'FPYUI', 'TOZQW', 'LPEDA', 'PECFD')
sizes = (28, 24, 20, 16, 12)

root = tk.Tk()

factor = 2
tkfont = Font(font=("Courier New", max(sizes), 'bold'))
width, height = tkfont.measure("W")*factor, tkfont.metrics("linespace")*factor
image = tk.PhotoImage(data='')

for row, (text, size) in enumerate(zip(texts, sizes)):
    for column, t in enumerate(text):
        label = tk.Label(root, text=t, font=("Courier New", size, 'bold'), image=image, width=width, height=height, compound=tk.CENTER)
        label.grid(row=row, column=column)

root.mainloop()

enter image description here

相关问题 更多 >

    热门问题