20-获取活动窗口
20.9.1 获取活动窗口
屏幕上的活动窗口是当前处于前台并且接收键盘输入的窗口。如果你当前正在使用Mu编辑器编写代码,那么Mu编辑器的窗口为活动窗口。屏幕上的所有窗口中,同时仅有一个处于活动状态。
在交互式环境中,调用 pyautogui.getActiveWindow()
函数以获取 Window
对象(在Windows操作系统上运行时,从技术上讲是 Win32Window
对象)。
拥有该 Window
对象后,你可以获取它的所有属性。这些属性描述了它的大小、位置和标题。
left
、 right
、 top
、 bottom
:一个整数,表示窗口边的x或y坐标。
topleft
、 topright
、 bottomleft
、 bottomright
:两个整数的命名元组,表示窗口角的(x, y)坐标。
midleft
、 midright
、 midleft
、 midright
:两个整数的命名元组,表示窗口边中间的(x, y)坐标。
width
, height
:一个整数,表示窗口的一个维度,以像素为单位。
size
:两个整数的命名元组,表示窗口的(宽度,高度)。
area
:一个整数,表示窗口的面积,以像素为单位。
center
:两个整数的命名元组,表示窗口的中心(x, y)坐标。
centerx
、 centery
:一个整数,表示窗口中心的x或y坐标。
box
:4个整数的命名元组,表示窗口(左侧、顶部、宽度、高度)。
title
:窗口顶部标题栏中的文本字符串。
例如,要从窗口对象中获取窗口的位置、大小和标题信息,请在交互式环境中输入以下内容:
>>> import pyautogui
>>> fw = pyautogui.getActiveWindow()
>>> fw
Win32Window(hWnd=2034368)
>>> str(fw)
'<Win32Window left="500", top="300", width="2070", height="1208", title="Mu
1.0.1 # test1.py">'
>>> fw.title
'Mu 1.0.1 # test1.py'
>>> fw.size
(2070, 1208)
>>> fw.left, fw.top, fw.right, fw.bottom
(500, 300, 2070, 1208)
>>> fw.topleft
(256, 144)
>>> fw.area
2500560
>>> pyautogui.click(fw.left + 10, fw.top + 20)
现在,你可以用这些属性来计算窗口内的精确坐标。如果你知道要单击的按钮总是位于窗口左上角的右侧10像素和向下20像素,并且窗口的左上角位于屏幕坐标(300,500),那么调用 pyautogui.click(310, 520)
(或 pyautogui.click(fw. left + 10 fw.top + 20)
,如果 fw
包含该窗口的 Window
对象)将单击该按钮。这样,你就不必依靠速度较慢、可靠性较低的 locateOnScreen()
函数来找到按钮。