一尘不染

以4k(3840 * 2160)分辨率缩放Tkinter GUI?

python

我在VirtualBox中使用LinuxMint 17.3 Cinnamon,本机使用1920 * 1080分辨率,Hi-
DPI选项已打开。主机为Windows 10,分辨率为3840 * 2160。
尽管在LinuxMint中启用了Hi-DPI选项,但在缩放方面,某些应用程序看起来很适合舒适的工作,但是python-tk
GUI(python2)尚未更改-字体很小,Cinnamon中的Font选项也有所更改不会更改tk中的字体。有什么办法可以正确扩展已经编写的tk
GUI应用程序?


阅读 319

收藏
2020-12-20

共1个答案

一尘不染

tkinter具有内部比例因子,可用于将诸如点和英寸之类的度量转换为像素。您可以使用“ tk
scale”命令进行设置。此命令采用一个参数,即一个“点”中的像素数。点为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倍。比例因子的初始值是在应用程序启动时根据安装的监视器的属性设置的,但可以随时更改。更改比例因子后进行的测量将使用新的比例因子,但是尚不确定现有小部件是否会动态调整自身大小以适应新的比例因子。

2020-12-20