如何根据tkinter中的标签高度动态计算字体大小



我正在编写一个tkinter脚本,它将显示一些文本和下面的图像,但有时图像不存在。无论哪种方式,我都希望程序根据最大字体大小动态选择字体大小,同时文本仍然适合标签中的一行或换行,只要它填满了所有空间。

我知道我可以通过使用:self.height = text.winfo_height()来获得标签大小,但我不确定如何使用它,以及逻辑是什么,所以我可以找到为标签文本设置的正确字体大小。你可以在屏幕截图中看到一个文本示例,但请记住,在某些情况下,文本可能会更长,有时可能是图像,所以我需要它是动态的。如有任何帮助,我们将不胜感激。:(图像

我今天试过的一件事是根据标签的像素高度来调整字体大小,但这当然让它太大了,因为每个字母都是标签的大小:

text = Text(
self.root)
text.insert(END, self.text_in_file)
text.pack(expand=True, fill=BOTH)
text.update()
self.height = text.winfo_height()
self.main_font = TkFont.Font(size = -text.winfo_height())
text.config(font = self.main_font)
text.pack(expand=True, fill=BOTH)

如果要测量特定字体中文本字符串的呈现宽度,可以在字体上使用measure方法。高度是字体的一个属性,可以通过字体的metrics方法获得。

font = Font(...)
width = font.measure("Hello, world")
height = font.metrics()['linespace']

有了这些信息,您可以使用循环来尝试不同的字体大小,直到找到适合您按钮的大小。

相关内容

  • 没有找到相关文章

最新更新