Tkinter GUI 以 4k(3840*2160)分辨率缩放吗?
- 2025-04-10 09:45:00
- admin 原创
- 18
问题描述:
我在 VirtualBox 中使用 LinuxMint 17.3 Cinnamon,这台机器的分辨率为 19201080,Hi-DPI 选项已打开。主机是 Windows 10,分辨率为 38402160。
尽管在 LinuxMint 中打开了 Hi-DPI 选项,但一些应用程序在缩放方面看起来不错,可以舒适地工作,但 python-tk GUI(python2)没有改变 - 字体大小很小,更改 Cinnamon 中的字体选项不会更改 tk 中的字体。有没有办法正确缩放已经编写的 tk GUI 应用程序?
解决方案 1:
tkinter 有一个内部缩放因子,用于将点和英寸等测量单位转换为像素。您可以使用“tk scaling”命令设置它。此命令接受一个参数,即一个“点”中的像素数。一个点是 1/72 英寸,因此缩放因子 1.0 适用于 72DPI 显示器。
root = Tk()
root.tk.call('tk', 'scaling', 2.0)
根据类似问题中的评论,这不会影响默认字体,因为它们是在 tkinter 上下文之外定义的。如果您以点为单位指定自己的字体,它们应该遵守此设置。
该命令的官方文档是scaling
这样的:
设置并查询 Tk 当前使用的在物理单位(例如,点、英寸或毫米)和像素之间转换的缩放因子。number 参数是一个浮点数,指定窗口显示上每个点的像素数。如果省略 window 参数,则默认为主窗口。如果省略 number 参数,则返回缩放因子的当前值。
“点”是测量单位,等于 1/72 英寸。缩放因子 1.0 对应于每点 1 像素,相当于标准的 72 dpi 显示器。缩放因子 1.25 意味着每点 1.25 像素,这是 90 dpi 显示器的设置;在 72 dpi 显示器上将缩放因子设置为 1.25 将导致应用程序中的所有内容都显示为正常大小的 1.25 倍。缩放因子的初始值是在应用程序启动时根据已安装显示器的属性设置的,但可以随时更改。缩放因子更改后进行的测量将使用新的缩放因子,但现有小部件是否会动态调整自身大小以适应新的缩放因子尚不确定。
解决方案 2:
你可以使用该Clmage
模块来提高 GUI 渲染的分辨率
扫码咨询,免费领取项目管理大礼包!