我在VirtualBox中使用LinuxMint 17.3 Cinnamon,在本机中使用1920*1080分辨率,打开Hi-DPI选项.主机是Windows 10,分辨率为3840*2160.
尽管在LinuxMint中启用了Hi-DPI选项,但在缩放方面,一些应用程序看起来很舒服,但是python-tk GUI(python2)没有改变 - 字体很小,改变了Cinnamon中的字体选项不会更改tk中的字体.有没有办法正确扩展已编写的tk GUI应用程序?
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倍.根据已安装的监视器的属性,在应用程序启动时设置缩放因子的初始值,但可以随时更改.在缩放因子改变之后进行的测量将使用新的缩放因子,但是现有的小部件是否将动态调整其大小以适应新的缩放因子是未定义的.