如何修改PyInstaller打包的控制台应用窗口标题栏文本
问题:PyInstaller打包的控制台EXE标题栏显示变动数字并闪烁,如何修改为指定文本?
问题详情
使用PyInstaller打包控制台应用生成EXE后,窗口标题栏会显示变动的数字并出现闪烁,希望将标题栏文本改为EXE的名称(指定简短文本)。已尝试以下方案但未解决:
- 因需跨平台,不愿使用仅适用于Windows的ctypes方案
- pygame方案导致应用无法加载
- tkinter方案无效果
- Kivy安装失败未尝试,且官方文档未找到相关内容
打包命令:
pyinstaller myapp.py --noconfirm --uac-admin --collect-all somepackage --add-data "a_dll.dll";. --clean --name myapp
可通过以下测试代码复现问题(myapp.py):
print("Hello World.") input("Say something: ")
解决方案:跨平台原生设置控制台标题
在代码中添加一个跨平台的标题设置函数,无需依赖额外第三方库,直接通过系统命令或ANSI转义序列实现:
import os import sys def set_console_title(title): if sys.platform.startswith('win'): # Windows系统调用title命令修改控制台标题 os.system(f'title {title}') elif sys.platform.startswith('linux') or sys.platform.startswith('darwin'): # Linux/macOS使用ANSI转义序列设置终端窗口标题 sys.stdout.write(f'\033]0;{title}\007') sys.stdout.flush() # 设置标题为你的EXE名称(此处为myapp) set_console_title('myapp') print("Hello World.") input("Say something: ")
修改代码后,使用原PyInstaller命令重新打包即可。
说明
- 该方法原生支持Windows、Linux、macOS,满足跨平台需求
- Windows下通过系统内置的
title命令修改控制台标题,类Unix系统通过标准ANSI转义序列设置终端标题,无需额外依赖 - 打包后运行时会自动设置标题,可避免原标题栏的数字变动和闪烁问题
内容的提问来源于stack exchange,提问作者Shmack
相关产品推荐
相关产品推荐

