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相关子模块,无需单独安装。
解决步骤
- 先卸载所有相关冗余包:
pip uninstall -y pywin32 pypiwin32 win32con win32gui
- 清理pip缓存,避免残留旧安装文件干扰:
pip cache purge
- 安装适配Python 3.9的pywin32稳定版本:
python -m pip install pywin32==303
- 验证安装是否成功:
打开Python交互终端,执行以下代码,无报错则说明安装正常:
import win32gui import win32con
内容的提问来源于stack exchange,提问作者ALCH3M1ST
相关产品推荐
相关产品推荐

