查找tkinter.Text小部件的当前大小

时间:2012-04-23 21:24:48

标签: python python-3.x tkinter

我正在尝试使用Text小部件创建一个roguelike。

我已经找到了一些东西,即我可以使用宽度和高度选项设置小部件的大小,并且我可以找到所述小部件的像素高度或宽度。但是,我想要做的是让窗口小部件可调整大小(pack(expand =“yes”,fill =“both”))但能够刷新调整大小时显示的文本。有没有办法在小部件运行时获取角色尺寸而不依靠winfo_width()和基于角色像素尺寸的数学?

3 个答案:

答案 0 :(得分:2)

我遇到了几次相同的问题jaccarmac,据我所知,没有办法找到一串字符的宽度。真正唯一的方法是使用winfo_命令:width,height,geometry。但是,如果您更改标签并添加更多文本,您只是想确保显示所有文本。如果是这种情况,您不必担心。这应该由小工具本身来处理。如果您没有看到它们展开以显示所有标签,那通常意味着包含该标签的其中一个小部件未设置为展开(使用expand = YES with .pack或columnconfigure(i,weight = 1)for .grid)。

最后的想法;在包参数中确保它是YES,而不是"yes"。大写的YES不是字符串,而是由Tkinter定义的变量名。

答案 1 :(得分:0)

无法自动获取字符宽度,但假设您使用固定宽度字体,则很容易计算。一种方法是使用字体对象的font_measure方法。使用font_measure来获取'0'的宽度(或任何其他字符的宽度;我认为tk用户在内部为零,而不是使用固定宽度字体重要),然后在计算中使用它。

答案 2 :(得分:0)

这是一个老问题,但在做了一些研究之后我发现实际上有一种方法可以直接获取高度/宽度信息而无需数学或使用Text小部件{{1}来播放字体宽度方法:

cget()

由于text_widget = tk.Text() width_in_char = text_widget.cget('width') height_in_char = text_wdiget.cget('height') 窗口小部件以字符形式存储其高度和宽度配置,因此只需查询这些参数即可为您提供所需内容。