Tkinter 计算屏幕上能容纳的字符数

0 投票
1 回答
1040 浏览
提问于 2025-04-18 02:57

我正在用Tkinter在Python中创建图形界面,但遇到了一个调整大小的问题。我使用的是网格布局,文本框的宽度设置为100,请问有没有办法计算屏幕上能放下多少个字符?这样我就可以在启动时把宽度设置为这个数字,并把我的文本元素“拉伸”到这个数字。有没有什么已知的数字,比如一个字符大约是10像素宽,那我们就可以把屏幕的宽度除以10,这样就能得到能放下的字符数量?

1 个回答

1

严格来说,你应该让你的图形界面(GUI)适应环境,而不是让环境适应它。因此,你应该让你的文本控件有合适的换行方式(可以是字符换行或单词换行),或者关闭换行并在它们上面加一个水平滚动条。这样做之后,你就可以最大化整个窗口,所有的内容就会(应该会;这取决于你是否正确设置了布局)自动适应。

但如果你想反过来做,首先要获取你想要测量的字体(因为不同的字体差别很大,字体大小也很重要),然后使用它的 measure 方法 来计算东西的宽度。理想情况下,你应该测量实际的文本(这在使用可变宽度字体时非常重要),但如果你不知道具体内容,可以先创建一个由重复的 0 字符组成的字符串来测量。 (我建议用 0,因为这是 Tk 在没有更好选择时内部使用的“默认”字符,而且在大多数字体中,它的宽度介于 iM 之间;你也可以用同样的思路。)

撰写回答