her*_*ity 4 python user-interface tkinter
我正在阅读下面链接中的回复并遇到“屏幕单位”,但我无法在吉姆丹尼的回复中找到“屏幕单位”究竟指的是什么。我知道它们不是像素。
这在tkinter python 文档中非常简要地提到,尽管它没有使用短语“屏幕单位”:
距离 屏幕距离可以用像素或绝对距离指定。像素以数字形式给出,绝对距离以字符串形式给出,尾随字符表示单位:c 表示厘米,i 表示英寸,m 表示毫米,p 表示打印机点。例如,3.5 英寸表示为“3.5i”。
tcl/tk 文档中提到了“屏幕单元”。Tkinter 基于嵌入式 tcl/tk 解释器。因此,tcl/tk 文档包含定义定义。
在某些文档中,您会发现如下内容:
RootX 和 rootY 以屏幕单位指定(即 Tk_GetPixels 可接受的任何形式)
因此,“屏幕单位”是Tk_GetPixels. 该Tk_GetPixels手册页这样说:
这些过程将屏幕上的距离规范(objPtr 或字符串)作为参数,并以整数像素或浮点毫米数计算相应的距离。在任一情况下,objPtr 或 string 将屏幕距离指定为浮点数,后跟以下指示单位的字符之一:
<none>数字以像素为单位指定距离。
c该数字以厘米为单位指定屏幕上的距离。
i该数字指定屏幕上的距离(以英寸为单位)。
m该数字以毫米为单位指定屏幕上的距离。
p该数字指定屏幕上以打印机点数(1/72 英寸)为单位的距离。
因此,在任何可以指定“屏幕距离”的地方,您都可以使用"42"(42 像素)、"42c"(42 厘米)、"42i"(42 英寸)、"42m"(42 毫米)或"42p"(42 个打印机点)。
请注意,要将这些值转换为实际像素值,tk 将使用缩放因子,该因子由操作系统自动设置(有时不正确!)或通过调用tk scaling. 该TK缩放文档这样说:
tk scaling设置和查询 Tk 用于在物理单位(例如,点、英寸或毫米)和像素之间转换的当前比例因子。number 参数是一个浮点数,用于指定窗口显示上每个点的像素数。如果省略 window 参数,则默认为主窗口。如果省略 number 参数,则返回缩放因子的当前值。“点”是等于 1/72 英寸的测量单位。缩放因子 1.0 对应于每点 1 个像素,相当于标准的 72 dpi 显示器。1.25 的缩放因子意味着每点 1.25 像素,这是 90 dpi 显示器的设置;在 72 dpi 显示器上将缩放因子设置为 1.25 会导致应用程序中的所有内容显示为正常大小的 1.25 倍。缩放因子的初始值在应用程序启动时根据已安装监视器的属性设置,但可以随时更改。在缩放因子更改后进行的测量将使用新的缩放因子,但未定义现有小部件是否会动态调整自身大小以适应新的缩放因子。
没有直接的 tkinter 接口tk scaling,但您可以使用tk.call根窗口的方法调用它。
例如,如果你知道你有一个 100dpi 的显示器,你可以像这样显式设置缩放因子:
import tkinter as tk
...
root = tk.Tk()
root.tk.call('tk', 'scaling', '-displayof', '.', 100.0/72.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |