相关疑难解决方法(0)

如何在Python中获得显示器分辨率?

获取监视器分辨率的最简单方法是什么(最好是在元组中)?

python resolution screen

99
推荐指数
18
解决办法
13万
查看次数

在 Python TkInter 应用程序中检测 DPI/缩放因子

我希望我的应用程序能够检测到它是否在 HiDPI 屏幕上运行,如果是,则自行扩展以供使用。正如在这个问题中所说,我知道我需要设置一个比例因子,这个因子应该是我的 DPI 除以 72;我的麻烦在于获取 DPI。这是我所拥有的:

def get_dpi(window):
    MM_TO_IN = 1/25.4
    pxw = window.master.winfo_screenwidth()
    inw = window.master.winfo_screenmmwidth() * MM_TO_IN
    return pxw/inw

root = Tk()
root.tk.call('tk', 'scaling', get_dpi(root)/72)
Run Code Online (Sandbox Code Playgroud)

这不起作用(在我的 4k 笔记本电脑屏幕上测试)。进一步检查,我意识到get_dpi()是返回96.0,那winfo_screenmmwidth()是返回1016!(谢天谢地,我的笔记本电脑没有超过一米宽)。

我假设 TkInter 在这里根据一些内部检测到的 DPI 计算宽度(以毫米为单位),错误地检测为 96,但我不确定它是从哪里得到的;我目前在 Linux 上,并xrdb -query返回 196 的 DPI,因此它没有从 X 服务器获取 DPI。

有谁知道一种跨平台的方式来获取我的屏幕 DPI,或者让 TkInter 能够正确获取它?或者,更重要的是:如何让 TkInter 在 HiDPI 屏幕上运行良好,并且在普通屏幕上也能正常工作?谢谢!

python tkinter dpi

6
推荐指数
3
解决办法
3390
查看次数

标签 统计

python ×2

dpi ×1

resolution ×1

screen ×1

tkinter ×1