2016-04-03 219 views
1

我正在使用4k显示器(3840x2160)。tkinter无法正确识别屏幕分辨率

from tkinter import * 

root = Tk() 

width = root.winfo_screenwidth() 
height = root.winfo_screenheight() 

print (width, height) 

mainloop() 

当我运行这段代码的输出是1536由864

有人能解释为什么发生这种情况,我怎么能解决这个问题,谢谢。

+0

似乎也发生[here](http://stackoverflow.com/questions/17129144/tk-winfo-returns-wrong-screensize-python-2-7-5-on-windows-8)。我不明白为什么(在我的机器上正常工作)。 – TigerhawkT3

+0

这是在Windows上吗?可能是一些高DPI意识标志,这意味着Tk正在缩放。 – patthoyts

+0

是的,它在Windows 10 64位上。我相信Tkinter的默认DPI是72,我的屏幕是15.6英寸将有282 DPI。 –

回答

0

我在Raspberry pi上运行了你的代码,并且获得了我的显示器的正确值(这不是4K显示器)。

我没有解决方案,但我注意到,你的比预期/观测到的答案是

3840/1536 = 2.5 
2160/864 = 2.5 

也许对于4K显示屏幕驱动使得真实的物理像素(3840X2160)之间的差值一些“逻辑像素”的概念。目的是为了避免显示某些软件,例如,具有8个真实物理像素的8点文本,因为这将是不可读的。

我不能测试这个(我没有硬件),它只是一个假设。我也可能没有确切的术语。 (在iOS上,有点vs像素的概念 - 你可以搜索这些术语,即使它没有回答你的问题,也可能是类似的问题)。