2017-01-24 39 views
1

我意识到这是一个微不足道的问题,但我很困惑。Tkinter中指定的Canvas单位是什么?

我有一个13英寸的MacBook Pro与视网膜显示。系统报告中我的系统声明了一个2560x1600的分辨率。我假定tkinter中的Canvas命令以像素为单位测量高度和宽度,并且tk documentation似乎也表明了这一点。然而,下面的代码中,我使用1200作为宽度,700作为tkinter画布的高度,产生大部分填充我的屏幕的画布。

什么单位的画布高度和宽度在?

from tkinter import * 

master = Tk() 

x = 1200 
y = 700 

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


mainloop() 
+0

它必须是“点每像素”设置,其中视网膜显示器使用1个像素(由程序定义)的2个点(测量为2560x1600)。 Wikipedia [说](https://en.wikipedia.org/wiki/Retina_Display):_当Apple产品具有Retina显示屏时,每个用户界面小部件的宽度和高度都会加倍,以补偿较小的像素。苹果称这种模式HiDPI模式_ –

+0

@CiprianTomoiaga啊,这是总的感觉。谢谢。我不知道那件事。 – Potato

回答

5

你是对的,TkInter测量的是像素尺寸。但是:

视网膜显示器有更高的密度硬件像素,使显示看起来更清晰。但是,请注意,这些程序不一一对应于渲染程序使用的像素。 从Wikipedia

当苹果产品具有视网膜显示,每个用户界面窗口小部件在宽度和高度加倍,以补偿更小的像素。 Apple称这种模式为HiDPI模式

对于任何包含高像素密度(DPI)的显示器,情况也是如此。 因此,如果您希望您的小部件占用屏幕宽度/高度的某个百分比,则应首先检测您是否在HiDPI显示器上并相应地缩放您的小部件。 This question可能会有所帮助。