You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:无法从win32con导入SetWindowPos报错

Pygame窗口置顶问题的原因及解决方法

问题1:ImportError: cannot import name 'SetWindowPos' from 'win32con'

原因

SetWindowPos不是win32con模块里的常量,它是win32gui提供的API函数,你之前的导入和调用逻辑完全搞反了。

修正后的代码

import pygame
import win32gui
import win32con

# 初始化Pygame窗口
pygame.init()
screen = pygame.display.set_mode((640, 480))

# 获取窗口句柄并设置置顶
hwnd = pygame.display.get_wm_info()['window']
win32gui.SetWindowPos(
    hwnd,
    win32con.HWND_TOPMOST,
    0, 0, 0, 0,
    win32con.SWP_NOMOVE | win32con.SWP_NOSIZE
)

# 主循环保持窗口运行
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    pygame.display.flip()

pygame.quit()

问题2:安装win32gui时出现subprocess-exited-with-error

原因

  • Python 3.9和部分pywin32版本存在兼容性适配问题,单独安装win32gui子模块时,容易因为编译依赖缺失导致安装失败。
  • 单独安装win32con、win32gui这类子模块本身就不合理,pywin32包已经包含了所有win32相关子模块,无需单独安装。

解决步骤

  1. 先卸载所有相关冗余包:
pip uninstall -y pywin32 pypiwin32 win32con win32gui
  1. 清理pip缓存,避免残留旧安装文件干扰:
pip cache purge
  1. 安装适配Python 3.9的pywin32稳定版本:
python -m pip install pywin32==303
  1. 验证安装是否成功:
    打开Python交互终端,执行以下代码,无报错则说明安装正常:
import win32gui
import win32con

内容的提问来源于stack exchange,提问作者ALCH3M1ST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:07:16