abd*_*mad 0 python tkinter python-3.x tkinter-layout tkinter-text
嘿,我希望你们一切都好。我正在 python tkinter 中构建一个视力表软件,其中包含 Opto Charts。在光学图表中,所有字母都直接位于彼此下方。但是当我尝试在 tkinter 中添加标签时,它形成 V 形,因为每行字体大小都在减小。我想占据标签所有可用空间。
我设法使用它来做到这一点 mainFrame.rowconfigure(0, weight=1)
,但它只能使标签达到全宽,而不是其中的文本。我已附上屏幕截图以了解其外观。
在屏幕截图中,您可以看到标签设置为屏幕的全长,但文本呈 V 形,因为字体大小从上到下减小。有没有办法将文本锚定为全宽。换句话说,每个字母表都应该直接位于上面的字母表之下。
我希望我已经说清楚了,如果您需要了解其他信息,请告诉我。
如果标签中显示图像或位图,则该值以屏幕单位为单位;对于文本,它是字符。
要为不同大小的字体占用相同的空间,请尝试使用图像模式并使用空图像。
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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
950 次 |
最近记录: |