python - Tkinter : Getting screen text unit width.(不是像素)

标签 python tkinter

我正在使用 Tkinter 为应用程序设计 UI。我正在使用网格几何体,并且在指定按钮宽度(或任何小部件宽度)时,我意识到应该以文本单位而不是像素来指定宽度。因为我想让它独立于平台并且独立于屏幕尺寸有没有什么方法可以获得最大文本单元宽度?这样我就可以在此基础上进行数学计算。

例如:

我有 10 个连续的按钮,它们的宽度应该相等。如果我硬编码一个特定于当前屏幕值的宽度值,它将无法在不同的屏幕上工作。

谢谢。

最佳答案

使用 tkinter.font 包,您可以创建 Tk 字体对象来定义字体,并调用 measure 方法来获取使用该字体的文本的屏幕宽度。

import tkinter as tk
import tkinter.font as tkfont
root = tk.Tk()
font = tkfont.Font(family="Consolas", size=10, weight="normal")
m_len = font.measure("m")

对于等宽字体,任何字符都可以。对于比例文本,如果您给出整个字符串,您将获得该字符串的屏幕长度。否则,您通常会得到 mn 的大小作为最大或平均字符宽度。

但是,在许多 UI 样式中,按钮的大小通常都相同。改变按钮大小可能看起来很差。您可以指定负宽度来设置 minimum小部件的宽度,这可能会有帮助。

关于python - Tkinter : Getting screen text unit width.(不是像素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950925/

相关文章:

python - Python 中的抽象方法继承

python - Tkinter:WAITING队列中的项目

python - 按下 Tkinter 时清除输入框文本

python - 使用 tensorflow image_dataset_from_directory 时从数据集中获取标签

python - 如何枚举实体的反向引用

python - flask 张贴到同一页

python - Pandas DF - 测量频率,附加到适当的行并按 max(freq) 标准化

python - Tkinter:在网格布局中获取按钮上方的图像

python - 如何将和转换为二进制

python - ttk.OptionMenu() 在所有菜单上显示复选标记