【问题标题】:(Python 2.7) Get UI title bar size(Python 2.7) 获取 UI 标题栏大小
【发布时间】:2018-07-11 13:54:34
【问题描述】:

前提

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

然后我想验证程序是否以指定的大小启动,所以使用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,边框大小为3px,标题栏高度为26px。有人可以确认/谴责这些信息吗?

【问题讨论】:

    标签: python python-2.7 titlebar win32gui


    【解决方案1】:

    选项 1: 您可以硬编码并给它从左右和底部固定偏移 8px,从顶部固定偏移 31px,以从顶部移除不可见的边框和标题栏。

    但是这样当您更改窗口比例时,它将不再正常工作,如果您正在编写代码以自己使用该程序,则此选项非常有用。如果您希望程序兼容多种音阶,请尝试选项 2。

    选项 2:

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

        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 是没有标题栏或不可见边框的矩形

    来源: GetWindowRect GetClientRect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多