为 Tkinter 指定的 Canvas 单位是什么?

What are Canvas units specified in for Tkinter?

我知道这是一个微不足道的问题,但我还是很困惑。

我有一台配备视网膜显示屏的 13 英寸 MacBook Pro。我的系统在系统报告中声称分辨率为 2560 x 1600。我假设 tkinter 中的 Canvas 命令以像素为单位测量高度和宽度,而 tk documentation 似乎也表明了这一点。然而,在下面的代码中,我使用 1200 作为宽度,使用 700 作为 tkinter canvas 的高度,生成的 canvas 大部分填满了我的屏幕。

canvas 高度和宽度的单位是什么?

from tkinter import *

master = Tk()

x = 1200
y = 700

w = Canvas(master, width=x, height=y)
w.pack()


mainloop()

你是对的,TkInter 确实以像素为单位测量大小。但是:

Retina 显示屏具有更高的 硬件 像素密度,使显示屏看起来更清晰。但是,请注意,这些与程序使用的渲染像素并不一一对应。 来自 Wikipedia

When an Apple product has a Retina Display, each user interface widget is doubled in width and height to compensate for the smaller pixels. Apple calls this mode HiDPI mode

任何具有高像素密度 (DPI) 的显示器也是如此。 因此,如果您希望您的小部件位于屏幕的特定百分比 width/height,您应该首先检测您是否在 HiDPI 显示器上并相应地缩放您的小部件。 可能会有帮助。