回答问题

我在VirtualBox中使用LinuxMint 17.3 Cinnamon,本机使用1920*1080分辨率,开启了Hi-DPI选项。主机为Windows 10,分辨率为3840*2160。

尽管在 LinuxMint 中打开了 Hi-DPI 选项,但在缩放方面,一些应用程序看起来很适合舒适的工作,但是 python-tk GUI (python2) 没有改变 - 字体大小很小,改变了 Cinnamon 中的字体选项不会更改 tk 中的字体。有没有办法正确扩展已经编写的 tk GUI 应用程序?

Answers

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 倍。缩放因子的初始值是在应用程序启动时根据已安装监视器的属性设置的,但可以随时更改。缩放因子更改后进行的测量将使用新的缩放因子,但未定义现有小部件是否会动态调整自身大小以适应新的缩放因子。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐