【Python】wxPython 高 DPI 缩放问题(笔记本上字体模糊问题)

问题

使用 wxPython 编写的程序在某些高 DPI 的电脑(通常是笔记本)上显示出来的字体会非常模糊:
在这里插入图片描述在这里插入图片描述
事实上 wxPython 是支持高 DPI 的,但是由于我们的程序没有显式指明支持高 DPI,因此系统默认不支持高 DPI,就直接强行缩放画面,导致字体模糊。

系统方法

我们可以在系统的兼容性设置里强制更改某个程序的 DPI 缩放设置。
在这里插入图片描述
这里面有三个选项:

  • 应用程序:不强制缩放,交由应用程序处理。
  • 系统:默认使用的就是这种。前面说过,程序不支持高 DPI 的情况下就会强制缩放。
  • 系统(增强):针对 GDI 程序特别优化的缩放,“系统”是位图缩放,相当于缩放照片;“系统(增强)”是矢量缩放,不会变模糊。
应用程序
系统
系统(增强)

可以看到第三种效果最好。
(图片压缩,图上可能看不太出来)

程序方法

根据微软官方的文档,声明程序支持高 DPI 是通过设置清单文件来实现的。因此对于 Python 程序来说,高 DPI 设置只有打包后才会生效。
这里我用的是 Pyinstaller,根据文档,在打包命令里增加一个选项:

--manifest <清单文件路径>

或者如果你用 .spec 文件来打包的话,在 EXE 段里增加一个 manifest

# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
	# ...
)
pyz = PYZ(a.pure)

exe = EXE(
	# ...
	manifest='manifest.xml', # 清单文件
)

然后新建 manifest.xml 文件,粘贴以下内容进去:

<!-- 兼容性:系统 -->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值