首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(Python2.7)获取UI标题栏大小

(Python2.7)获取UI标题栏大小
EN

Stack Overflow用户
提问于 2018-07-11 13:54:34
回答 1查看 1K关注 0票数 2

前提

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

然后,我想验证是否以指定的大小启动了这个程序,所以我使用win32gui.GetWindowRect()计算窗口大小:

代码语言:javascript
运行
复制
>>> r = win32gui.GetWindowRect(HWND)
>>> w = r[2] - r[0]
>>> h = r[3] - r[1]
>>> print w,h
646 509

大小不匹配。我猜想这很可能是由于标题栏造成的。

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

注意:我需要知道标题栏的大小,以便验证程序的大小,因此使用win32gui.GetWindowRect()并用预期的大小减去它的值并不是一个解决方案。

图片来澄清我的问题

附加问题

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

根据我自己的计算(未正式确认的信息)在默认情况下Windows 10,边框的大小为3px,标题栏的高度为26px。有人能证实/谴责这一信息吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-15 10:28:35

选项1:您可以编写硬代码,并将其从左、右和底部固定为8 8px,从顶部为31 8px,以从顶部移除不可见的边框和标题栏。

但是这种方式,当你改变窗口的比例,它将不再正常工作,这个选项是伟大的,如果你是编码使用程序自己。如果您希望该程序与多个比例兼容,请尝试选项2。

备选案文2:

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

代码语言:javascript
运行
复制
    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)

在这里,newRect是没有标题栏或不可见边框的rect

资料来源:GetWindowRect GetClientRect

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51287338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档