Python GUI:tkinter中的“屏幕单元”是什么?

时间:2017-01-20 23:24:16

标签: python python-2.7 python-3.x user-interface tkinter

我正在阅读下面链接中的回复并进入“屏幕单位”,但我无法找到Jim Denney的回复中“屏幕单位”所指的内容。我知道他们不是像素。

How do I use Tkinter in Python to create line-wrapped text that fills the width of the window?

1 个答案:

答案 0 :(得分:1)

tkinter python documentation中对此进行了简要介绍,但它并未使用“屏幕单元”这一短语:

  

<强>距离   屏幕距离可以以像素或绝对距离指定。像素以数字和绝对距离作为字符串给出,尾随字符表示单位:c表示厘米,i表示英寸,m表示毫米,p表示打印机的点。例如,3.5英寸表示为“3.5i”。

tcl / tk文档中提到了“屏幕单元”。 Tkinter基于嵌入式tcl / tk解释器。因此,tcl / tk文档包含定义定义。

在某些文档中,您会发现如下内容:

  

RootX和rootY以屏幕为单位指定(即Tk_GetPixels可接受的任何形式)

因此,“屏幕单位”是Tk_GetPixels可接受的任何内容。 Tk_GetPixels man page说明了这一点:

  

这些过程将屏幕上距离的规范(objPtr或字符串)作为参数,并以整数像素或浮点毫米计算相应的距离。在任何一种情况下,objPtr或string都将屏幕距离指定为浮点数,后跟以下字符之一,表示单位:

     

&lt; none&gt; 数字指定距离(以像素为单位)。

     

c 该数字指定屏幕上以厘米为单位的距离。

     

i 该数字指定屏幕上以英寸为单位的距离。

     

m 该数字指定屏幕上以毫米为单位的距离。

     

p 该数字指定屏幕上打印机点(1/72英寸)的距离。

因此,在任何可以指定“屏幕距离”的地方,您都可以使用"42"(42像素),"42c"(42厘米),"42i"(42英寸),{ {1}}(42毫米)或"42m"(42个打印机点)。

请注意,要将这些值转换为实际像素值,tk将使用缩放系数,该系数由操作系统自动设置(有时不正确!)或调用"42p"tk scaling documentation说明了这一点:

  

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倍。根据已安装的监视器的属性,在应用程序启动时设置缩放因子的初始值,但可以随时更改。更改比例因子后进行的测量将使用新的比例因子,但现有的小部件是否会动态调整大小以适应新的比例因子是未定义的。

tk scaling没有直接的tkinter接口,但您可以使用根窗口的tk scaling方法调用它。

例如,如果您知道自己拥有100dpi显示器,则可以明确设置缩放系数,如下所示:

tk.call