我正在编写一个tkinter应用程序,我希望这些小部件在显示屏上以英寸为单位。我有一个插入Mac Mini的24英寸三星显示器。显示器宽约520毫米,高295毫米。当我尝试以英寸为单位指定画布小部件的尺寸时,一切都太小了大约三分之一。
以下是我尝试的内容:
from tkinter import *
root = Tk()
root.winfo_screenmmheight()
381
root.winfo_screenmmwidth()
677
root.winfo_screenheight()
1080
root.winfo_screenwidth()
1920
1080/381
2.8346456692913384
1920/677
2.8360413589364843
_*25.4 # 25.4 millimeters per inch
72.0354505169867
root.tk.call('tk', 'scaling', 1.33)
''
root.winfo_screenmmheight()
286
root.winfo_screenmmwidth()
509
如果我在我的程序中root.tk.call('tk', 'scaling', 1.33)
,那么事情就是我想要的(或足够接近。)
似乎很清楚,问题是tkinter假设我的显示器每英寸有72个像素,而它实际上每英寸有96个像素。我可以扩展我的显示以获得我想要的东西,但是如果有一个72 PPI显示器的人运行代码,这将是错误的。我已经查看了与此相关的SO上的一些帖子,root.tk.call
是我发现的唯一有帮助的帖子,但它不可移植。
是否有与平台无关的方法来确定显示器有多少PPI?或者我是否需要让应用程序占用屏幕的固定部分?