Tkinter GUI在4K(3840 * 2160)分辨率下的缩放?

11

我在VirtualBox中使用LinuxMint 17.3 Cinnamon系统,分辨率为1920*1080,并开启了Hi-DPI选项。宿主机是Windows 10系统,分辨率为3840*2160。
尽管已经在LinuxMint中开启了Hi-DPI选项,但某些应用程序的缩放效果仍不理想,特别是python-tk GUI(Python2)字体大小过小,即使在Cinnamon中更改了字体选项也不能改变tk中的字体。是否有方法可以正确缩放已编写的tk GUI应用程序?

2个回答

21

tkinter有一个内部缩放因子,用于将像点和英寸这样的测量单位转换为像素。您可以使用"tk scaling"命令设置它。该命令需要一个参数,即"point"中的像素数。一个点是1/72英寸,因此在72DPI显示器上适合使用1.0作为缩放因子。

root = Tk()
root.tk.call('tk', 'scaling', 2.0)
根据类似问题中的评论,这不会影响默认字体,因为它们在tkinter的上下文之外定义。如果您以点为单位指定自己的字体,则应遵守此设置。 scaling命令的官方文档如下:
设置和查询Tk用于转换物理单位(例如点、英寸或毫米)和像素之间的当前缩放因子。数字参数是指在窗口显示器上每个点所使用的像素数的浮点数。如果省略窗口参数,则默认为主窗口。如果省略数字参数,则返回缩放因子的当前值。
“点”是一个等于1/72英寸的度量单位。缩放系数1.0对应于每个点1个像素,这相当于标准的72 dpi监视器。缩放系数1.25意味着每个点1.25个像素,这是90 dpi监视器的设置;将缩放因子设置为1.25在72 dpi监视器上会导致应用程序中的所有内容显示为正常大小的1.25倍。缩放因子的初始值在应用程序启动时设置,基于安装的监视器的属性,但它可以随时更改。更改缩放因子后进行的测量将使用新缩放因子,但不确定现有小部件是否会动态调整大小以适应新缩放因子。

2
缩放选项会影响按钮的大小,以及可能会影响其他元素,但不会影响标签、框架等文本的大小。看起来似乎没有办法更改已编写应用程序中的文本大小。对于新应用程序,自定义字体可能是一个解决方案。更多信息请参见此处 - alr
你是在说tkinter的最细粒度是以72DPI @BryanOakley为基础吗? - Reblochon Masque

-1
你可以使用 Clmage 模块来提高 GUI 渲染的分辨率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接