查找当前大小的tkinter.文本威德

2024-04-25 07:25:14 发布

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

我正在尝试使用文本小部件创建一个rogulelike。在

我想了一些事情,也就是说,我可以用width和height选项设置widget的大小,我可以找到widget的像素高度或宽度。但是,我想做的是使小部件的大小可调整(pack(expand=“yes”,fill=“both”)),但能够在调整大小时刷新显示的文本。有没有一种方法可以在小部件运行时不借助winfo_width()和基于字符像素尺寸的数学来获取字符尺寸?在


Tags: 文本宽度高度部件尺寸选项像素widget
3条回答

我遇到过几次同样的问题jaccarmac,据我所知,没有办法找到字符串的宽度。实际上,唯一的方法就是使用winfo帴命令:width、height、geometry。但是,如果您更改标签并添加更多文本,则听起来您只想确保显示所有文本。如果是这样的话,你就不用担心了。这些都应该由小部件自己来处理。如果您没有看到它们展开以显示所有标签,这通常意味着包含该标签的小部件之一没有设置为展开(或者使用expand=YES with.pack,或columnconfigure(i,weight=1)for.grid)。在

最后一个想法:在pack参数中确保它是YES,而不是{}。大写的YES不是字符串,而是由Tkinter定义的变量名。在

这是一个老问题,但在做了一些研究后,我发现实际上有一种方法可以直接获得高度/宽度信息,而不需要数学或使用Text小部件的cget()方法来处理字体宽度:

text_widget = tk.Text()
width_in_char = text_widget.cget('width')
height_in_char = text_wdiget.cget('height')

由于Text小部件以字符形式存储其高度和宽度配置,因此只需查询这些参数就可以得到您想要的结果。在

没有办法自动获得字符宽度,但它很容易计算,假设你使用的是固定宽度的字体。一种方法是使用font对象的font_measure方法。使用font_measure来获得“0”的宽度(或任何其他字符的宽度;我认为tk用户内部为零,与固定宽度字体无关),然后在计算中使用它。在

相关问题 更多 >