2024-04-25 07:25:14 发布
网友
我正在尝试使用文本小部件创建一个rogulelike。在
我想了一些事情,也就是说,我可以用width和height选项设置widget的大小,我可以找到widget的像素高度或宽度。但是,我想做的是使小部件的大小可调整(pack(expand=“yes”,fill=“both”)),但能够在调整大小时刷新显示的文本。有没有一种方法可以在小部件运行时不借助winfo_width()和基于字符像素尺寸的数学来获取字符尺寸?在
我遇到过几次同样的问题jaccarmac,据我所知,没有办法找到字符串的宽度。实际上,唯一的方法就是使用winfo帴命令:width、height、geometry。但是,如果您更改标签并添加更多文本,则听起来您只想确保显示所有文本。如果是这样的话,你就不用担心了。这些都应该由小部件自己来处理。如果您没有看到它们展开以显示所有标签,这通常意味着包含该标签的小部件之一没有设置为展开(或者使用expand=YES with.pack,或columnconfigure(i,weight=1)for.grid)。在
最后一个想法:在pack参数中确保它是YES,而不是{}。大写的YES不是字符串,而是由Tkinter定义的变量名。在
YES
这是一个老问题,但在做了一些研究后,我发现实际上有一种方法可以直接获得高度/宽度信息,而不需要数学或使用Text小部件的cget()方法来处理字体宽度:
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用户内部为零,与固定宽度字体无关),然后在计算中使用它。在
font_measure
我遇到过几次同样的问题jaccarmac,据我所知,没有办法找到字符串的宽度。实际上,唯一的方法就是使用winfo帴命令:width、height、geometry。但是,如果您更改标签并添加更多文本,则听起来您只想确保显示所有文本。如果是这样的话,你就不用担心了。这些都应该由小部件自己来处理。如果您没有看到它们展开以显示所有标签,这通常意味着包含该标签的小部件之一没有设置为展开(或者使用expand=YES with.pack,或columnconfigure(i,weight=1)for.grid)。在
最后一个想法:在pack参数中确保它是}。大写的YES不是字符串,而是由Tkinter定义的变量名。在
YES
,而不是{这是一个老问题,但在做了一些研究后,我发现实际上有一种方法可以直接获得高度/宽度信息,而不需要数学或使用
Text
小部件的cget()
方法来处理字体宽度:由于
Text
小部件以字符形式存储其高度和宽度配置,因此只需查询这些参数就可以得到您想要的结果。在没有办法自动获得字符宽度,但它很容易计算,假设你使用的是固定宽度的字体。一种方法是使用font对象的
font_measure
方法。使用font_measure
来获得“0”的宽度(或任何其他字符的宽度;我认为tk用户内部为零,与固定宽度字体无关),然后在计算中使用它。在相关问题 更多 >
编程相关推荐