(Python 2.7)获取UI标题栏大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Python 2.7)获取UI标题栏大小相关的知识,希望对你有一定的参考价值。

前提

我使用参数some program.exe启动-width 640 -height 480,这会导致程序以指定的大小启动。

然后我想验证程序是否以指定的大小启动,所以使用qazxsw poi我计算了窗口大小:

win32gui.GetWindowRect()

大小不匹配。我认为这很可能是由于标题栏。

我的问题是:如何获得标题栏的大小?

注意:我需要知道标题栏的大小以验证程序大小,因此使用>>> r = win32gui.GetWindowRect(HWND) >>> w = r[2] - r[0] >>> h = r[3] - r[1] >>> print w,h 646 509 并将其值减去预期大小不是解决方案。

图片来澄清我的问题

win32gui.GetWindowRect()

补充问题

不同的操作系统是否有不同的标题栏和边框大小?

根据我自己的计算(未经官方确认的信息)在默认的Windows 10中,边框的大小是Image to clarify what I am searching for (image has been modified to hide the program and a few pieces of information),标题栏的高度是3px。有人可以确认/谴责这些信息吗?

答案

选项1:你可以硬编码并从左下角和左下角给它固定的偏移量为8px,从顶部给出31px,从顶部删除不可见的边框和标题栏。

但是这样当你改变windows缩放比例时,它将不再正常工作,如果你编码自己使用这个程序,这个选项很棒。如果您希望程序与多个秤兼容,请尝试选项2。

选项2:

您可以使用26px来获取没有标题栏和不可见边框的窗口大小,然后您可以使用它来计算偏移量

GetClientRect

这里newRect是没有标题栏或不可见边框的矩形

资料来源: rect = win32gui.GetWindowRect(hwnd) clientRect = win32gui.GetClientRect(hwnd) windowOffset = math.floor(((rect[2]-rect[0])-clientRect[2])/2) titleOffset = ((rect[3]-rect[1])-clientRect[3]) - windowOffset newRect = (rect[0]+windowOffset, rect[1]+titleOffset, rect[2]-windowOffset, rect[3]-windowOffset) GetWindowRect

以上是关于(Python 2.7)获取UI标题栏大小的主要内容,如果未能解决你的问题,请参考以下文章

Python 2.7:仅从文件句柄(而不是路径)获取文件的大小

Python 2.7_多进程获取简书专题数据

在 Python 2.7 中获取代码块的执行时间

在 python 2.7 中增加递归限制和堆栈大小

发生配置更改时如何不重置我的片段?

Android - 如何显示包含从片段中获取的字符串的快餐栏