我正在尝试使用Text小部件创建一个roguelike。
我已经找到了一些东西,即我可以使用宽度和高度选项设置小部件的大小,并且我可以找到所述小部件的像素高度或宽度。但是,我想要做的是让窗口小部件可调整大小(pack(expand =“yes”,fill =“both”))但能够刷新调整大小时显示的文本。有没有办法在小部件运行时获取角色尺寸而不依靠winfo_width()和基于角色像素尺寸的数学?
答案 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')
窗口小部件以字符形式存储其高度和宽度配置,因此只需查询这些参数即可为您提供所需内容。