Python调用Windows API创建窗口完整示例

Ryan
Ryan
发布时间:2026-10-12| 3人浏览过
原创

本文详细介绍如何利用Python的win32gui模块调用Windows API创建图形界面窗口。通过注册窗口类、定义消息处理函数以及创建并显示窗口,展示了Python与底层系统交互的完整流程。

Python调用Windows API创建窗口示例

在Python开发中,虽然Tkinter或PyQt是常见的GUI库,但通过win32gui模块直接调用Windows API可以更深入地理解窗口机制。以下示例展示了如何创建一个简单的Windows窗口,并在其中绘制文本。

核心代码实现

首先,需要导入必要的模块并定义窗口过程函数(WndProc)。该函数负责处理窗口消息,如绘制和销毁事件。

# -*- coding:utf-8 -*-
#! python3
import win32gui
from win32con import *

def WndProc(hwnd,msg,wParam,lParam):
  if msg == WM_PAINT:
    hdc,ps = win32gui.BeginPaint(hwnd)
    rect = win32gui.GetClientRect(hwnd)
    win32gui.DrawText(hdc,'GUI Python',len('GUI Python'),rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER)
    win32gui.EndPaint(hwnd,ps)
  if msg == WM_DESTROY:
    win32gui.PostQuitMessage(0)
  return win32gui.DefWindowProc(hwnd,msg,wParam,lParam)

wc = win32gui.WNDCLASS()
wc.hbrBackground = COLOR_BTNFACE + 1
wc.hCursor = win32gui.LoadCursor(0,IDI_APPLICATION)
wc.lpszClassName = "Python no Windows"
wc.lpfnWndProc = WndProc
reg = win32gui.RegisterClass(wc)

hwnd = win32gui.CreateWindow(reg,'www.jb51.net - Python',WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0,0,None)
win32gui.ShowWindow(hwnd,SW_SHOWNORMAL)
win32gui.UpdateWindow(hwnd)
win32gui.PumpMessages()

代码逻辑解析

上述代码主要分为三个部分:窗口类定义、窗口创建与显示、消息循环。

  1. 定义窗口类:通过win32gui.WNDCLASS()创建窗口类对象,设置背景颜色、光标、类名以及消息处理函数。
  2. 注册窗口类:调用win32gui.RegisterClass(wc)注册窗口类,获取窗口类标识。
  3. 创建窗口:使用win32gui.CreateWindow()创建窗口实例,指定窗口标题、样式及初始位置。
  4. 显示与消息循环:通过win32gui.ShowWindow()和win32gui.UpdateWindow()显示窗口,最后调用win32gui.PumpMessages()进入消息循环,保持窗口运行。

运行结果

执行上述代码后,将弹出一个Windows窗口,窗口标题为“www.jb51.net - Python”,并在窗口中央显示“GUI Python”文本。

注意事项

在使用win32gui模块时,需确保已安装pywin32库。此外,消息处理函数需正确处理各种窗口消息,以避免窗口异常关闭或无响应。

以上就是Python使用Windows API创建窗口示例的详细内容,更多关于Python GUI编程的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。