使用非默认显示大小调整窗口中的Python窗口大小

2024-09-28 22:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近买了一台4K笔记本电脑,遇到了窗口大小的问题。在

我编写了一个python应用程序,根据系统的分辨率调整窗口大小。它工作得很好…除了4K笔记本电脑。在

它在这里不起作用,因为4K分辨率,所有东西都太小了。因此,Windows 10的“设置”>;“显示”>;“更改文本、应用程序和其他项目的大小:”下有一个功能:“您可以调整大小。此处的建议值为250%,而正常值为100%。在

这意味着,由于4k显示,窗口的大小一开始就很大,实际上比调整大小的窗口大250%。在

有没有办法编写一个python脚本来处理Windows?或者让Python应用程序不受Windows特性的影响?在


Tags: 项目文本gt功能脚本应用程序windows系统
1条回答
网友
1楼 · 发布于 2024-09-28 22:17:57

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)的更多信息:

https://msdn.microsoft.com/en-us/library/ms701681(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx

相关问题 更多 >