Py之pygetwindow:pygetwindow的简介、安装和使用方法、案例应用之详细攻略

Py之pygetwindow:pygetwindow的简介、安装和使用方法、案例应用之详细攻略

目录

pygetwindow的简介

pygetwindow的安装和使用方法

pygetwindow的案例应用

[1、使用了Windows系统打开了记事本应用程序,其窗口标题为"无标题 - 记事本"](#1、使用了Windows系统打开了记事本应用程序,其窗口标题为“无标题 - 记事本”)

2、Window对象可以被最小化/最大化/恢复/激活/调整大小/移动/关闭

[3、使用 pygetwindow 和 ctypes实现窗口置顶功能](#3、使用 pygetwindow 和 ctypes实现窗口置顶功能)


pygetwindow的简介

PyGetWindow一个用于获取和控制应用程序窗口GUI信息的简单跨平台模块。目前仍在开发中。当前仅实现了Windows平台。PyGetWindow提供了从屏幕上的位置、窗口标题,或获取所有窗口的方法来获取Window对象。Window对象可以被最小化/最大化/恢复/激活/调整大小/移动/关闭,并且还具有当前位置、大小和状态等属性。

pygetwindow的安装和使用方法

复制代码
pip install pygetwindow

pip install -i https://mirrors.aliyun.com/pypi/simple pygetwindow

pygetwindow的案例应用

1、 使用了Windows系统打开了记事本应用程序,其窗口标题为"无标题 - 记事本"

python 复制代码
>>> import pygetwindow as gw
>>> gw.getAllTitles()
('', 'C:\\WINDOWS\\system32\\cmd.exe - pipenv  shell - python', 'C:\\github\\PyGetWindow\\README.md • - Sublime Text', "asweigart/PyGetWindow: A simple, cross-platform module for obtaining GUI information on application's windows. - Google Chrome", '无标题 - 记事本', 'C:\\Users\\Al\\Desktop\\xlibkey.py • - Sublime Text', 'https://tronche.com/gui/x/xlib/ - Google Chrome', 'Xlib Programming Manual: XGetWindowAttributes - Google Chrome', 'Generic Ubuntu Box [Running] - Oracle VM VirtualBox', 'Oracle VM VirtualBox Manager', 'Microsoft Edge', 'Microsoft Edge', 'Microsoft Edge', '', 'Microsoft Edge', '设置', '设置', 'Microsoft Store', 'Microsoft Store', '', '', 'Backup and Sync', 'Google Hangouts - asweigart@gmail.com', '下载', '', '', 'Program Manager')
>>> gw.getAllWindows()
(Win32Window(hWnd=131318), Win32Window(hWnd=1050492), Win32Window(hWnd=67206), Win32Window(hWnd=66754), Win32Window(hWnd=264354), Win32Window(hWnd=329210), Win32Window(hWnd=1114374), Win32Window(hWnd=852550), Win32Window(hWnd=328358), Win32Window(hWnd=66998), Win32Window(hWnd=132508), Win32Window(hWnd=66964), Win32Window(hWnd=66882), Win32Window(hWnd=197282), Win32Window(hWnd=393880), Win32Window(hWnd=66810), Win32Window(hWnd=328466), Win32Window(hWnd=132332), Win32Window(hWnd=262904), Win32Window(hWnd=65962), Win32Window(hWnd=65956), Win32Window(hWnd=197522), Win32Window(hWnd=131944), Win32Window(hWnd=329334), Win32Window(hWnd=395034), Win32Window(hWnd=132928), Win32Window(hWnd=65882))
>>> gw.getWindowsWithTitle('无标题')
(Win32Window(hWnd=264354),)
>>> gw.getActiveWindow()
Win32Window(hWnd=1050492)
>>> gw.getActiveWindow().title
'C:\\WINDOWS\\system32\\cmd.exe - pipenv  shell - python'
>>> gw.getWindowsAt(10, 10)
(Win32Window(hWnd=67206), Win32Window(hWnd=66754), Win32Window(hWnd=329210), Win32Window(hWnd=1114374), Win32Window(hWnd=852550), Win32Window(hWnd=132508), Win32Window(hWnd=66964), Win32Window(hWnd=66882), Win32Window(hWnd=197282), Win32Window(hWnd=393880), Win32Window(hWnd=66810), Win32Window(hWnd=328466), Win32Window(hWnd=395034), Win32Window(hWnd=132928), Win32Window(hWnd=65882))

2、 Window对象可以被最小化/最大化/恢复/激活/调整大小/移动/关闭

python 复制代码
>>> notepadWindow = gw.getWindowsWithTitle('无标题')[0]
>>> notepadWindow.isMaximized
False
>>> notepadWindow.maximize()
>>> notepadWindow.isMaximized
True
>>> notepadWindow.restore()
>>> notepadWindow.minimize()
>>> notepadWindow.restore()
>>> notepadWindow.activate()
>>> notepadWindow.resize(10, 10)  # 增加 10x10 像素
>>> notepadWindow.resizeTo(100, 100)  # 设置窗口大小为 100x100
>>> notepadWindow.move(10, 10)  # 向右移动10像素,向下移动10像素
>>> notepadWindow.moveTo(10, 10)  # 将窗口移动到(10, 10)
>>> notepadWindow.size
(132, 100)
>>> notepadWindow.width
132
>>> notepadWindow.height
100
>>> notepadWindow.topleft
(10, 10)
>>> notepadWindow.top
10
>>> notepadWindow.left
10
>>> notepadWindow.bottomright
(142, 110)
>>> notepadWindow.close()

3、使用 pygetwindow 和 ctypes实现窗口置顶功能

python 复制代码
import pygetwindow as gw
import ctypes

# 获取窗口句柄(例如:通过窗口标题获取)
window_title = "软件"  # 请替换为你想要置顶的窗口的标题
window = gw.getWindowsWithTitle(window_title)

if window:
    hwnd = window[0]._hWnd  # 获取窗口句柄
    # 调用 Windows API 将窗口置顶
    HWND_TOPMOST = -1
    SWP_NOSIZE = 0x0001
    SWP_NOMOVE = 0x0002
    SWP_SHOWWINDOW = 0x0040

    ctypes.windll.user32.SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0,
                                     SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW)
    print(f"已将窗口 '{window_title}' 置顶")
else:
    print(f"未找到标题为 '{window_title}' 的窗口")
相关推荐
蓝婷儿5 分钟前
Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参
python·机器学习·近邻算法
之歆43 分钟前
Python-封装和解构-set及操作-字典及操作-解析式生成器-内建函数迭代器-学习笔记
笔记·python·学习
天天爱吃肉82181 小时前
ZigBee通信技术全解析:从协议栈到底层实现,全方位解读物联网核心无线技术
python·嵌入式硬件·物联网·servlet
Allen_LVyingbo2 小时前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗
智能砖头2 小时前
LangChain 与 LlamaIndex 深度对比与选型指南
人工智能·python
风逸hhh4 小时前
python打卡day58@浙大疏锦行
开发语言·python
烛阴4 小时前
一文搞懂 Python 闭包:让你的代码瞬间“高级”起来!
前端·python
JosieBook5 小时前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
Gyoku Mint6 小时前
深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
人工智能·pytorch·python·深度学习·神经网络·算法·聚类
郭庆汝11 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python