Windows将缩放未声明为DPI感知的任何应用程序(在清单或应用程序属性中)。在
如果您使用的是exe(嵌入式python实例或pyinstaller生成的实例),可以右键单击该exe,转到“兼容性”选项卡,然后选中“禁用DPI缩放”框。您也可以调整exe的清单(但是,这通常被编译到exe中,这使得在没有特殊工具的情况下进行更改变得很困难,尽管pyinstaller将其分开)。如果您可以访问清单,以下是有关如何更改它的信息:
https://blogs.msdn.microsoft.com/chuckw/2013/09/10/manifest-madness/
如果使用未编译的python脚本,可以使用ctypes调用WIn32 SetProcessDPIAware函数来执行此操作:from ctypes import *
import [your gui framework]
[your code here]
if __name__ == '__main__':
windll.shcore.SetProcessDpiAwareness(c_int(1))
[rest of your code]
如果您使用的python解释器已经在解释器的清单中声明了DPI感知,则调用可能会抛出拒绝访问的HRESULT(0x80070005)。有关详细信息,请参见https://msdn.microsoft.com/en-us/library/windows/desktop/dn302122(v=vs.85).aspx。在
您可能需要查看MSDN上的这些文章,以了解有关创建支持DPI的应用程序(以及如何告诉Windows)的更多信息: