【问题标题】:Scaling of Tkinter GUI in 4k (3840*2160) resolution?以 4k (3840*2160) 分辨率缩放 Tkinter GUI?
【发布时间】:2016-03-11 23:24:03
【问题描述】:

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

【问题讨论】:

    标签: python python-2.7 tkinter tk


    【解决方案1】:

    tkinter 有一个内部比例因子,用于将点和英寸等测量值转换为像素。您可以使用“tk scaling”命令进行设置。该命令采用一个参数,即一个“点”中的像素数。一个点是 1/72 英寸,因此 1.0 的比例因子适用于 72DPI 显示器。

    root = Tk()
    root.tk.call('tk', 'scaling', 2.0)
    

    根据a similar question 中的评论,这不会影响默认字体,因为它们是在 tkinter 上下文之外定义的。如果您以磅为单位指定自己的字体,它们应该遵循此设置。

    scaling 命令的official documentation 是这样的:

    设置和查询当前Tk用来转换的比例因子 物理单位之间(例如,磅、英寸或毫米) 和像素。 number 参数是一个浮点数 指定窗口显示上每点的像素数。如果 window 参数被省略,默认为主窗口。如果 number 参数被省略,缩放因子的当前值为 回来。

    “点”是等于 1/72 英寸的测量单位。一种 缩放因子 1.0 对应于每点 1 个像素,即 相当于标准的 72 dpi 显示器。比例因子为 1.25 意味着每点 1.25 像素,这是 90 dpi 的设置 监视器;在 72 dpi 显示器上将缩放因子设置为 1.25 使应用程序中的所有内容显示为 1.25 倍 正常的大。缩放因子的初始值设置为 应用程序根据已安装监视器的属性启动, 但它可以随时更改。缩放后进行的测量 更改因子将使用新的缩放因子,但未定义 现有的小部件是否会动态调整自己的大小 适应新的比例因子。

    【讨论】:

    • 缩放选项会影响按钮的大小,也许还会影响其他元素的大小,但它不会影响标签、框架等中文本的大小。看起来没有选择更改它们已经写好的应用程序。对于新应用程序,custom fonts 可能是一个解决方案。更多信息here.
    • 你是说 tkinter 最细的颗粒是在 72DPI @BryanOakley 上铸造的吗?
    【解决方案2】:

    您可以使用 Clmage 模块来提高您的 GUI 渲染的分辨率

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多