PyQt6窗口任务栏图标仅主屏幕显示,多屏不显示问题求助
PyQt6多屏幕任务栏图标不显示问题解决
问题描述
使用PyQt6创建窗口并设置图标后,主屏幕的窗口左上角和任务栏均能正常显示图标,但将窗口拖动到第二、第三屏幕时,仅窗口左上角显示图标,对应屏幕的任务栏无图标显示。直接运行脚本或打包为exe后问题均存在。
使用环境:Python 3.9.7、PyQt6==6.7.1
设置图标的核心代码:
class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() uic.loadUi(os.path.join(os.path.dirname(__file__), "DesignMainWindow.ui"), self) self.setWindowTitle("My title") icon_path = os.path.join(os.path.dirname(__file__), "icon.png") self.setWindowIcon(QtGui.QIcon(icon_path))
可行解决方案
1. 同时设置应用程序级图标
仅设置窗口图标可能在多屏幕场景下被系统忽略,需要为QApplication对象也设置图标:
if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) # 与窗口图标使用同一路径 icon_path = os.path.join(os.path.dirname(__file__), "icon.png") app.setWindowIcon(QtGui.QIcon(icon_path)) window = MainWindow() window.show() sys.exit(app.exec())
2. 更换为系统兼容的图标格式
Windows系统对.ico格式的多尺寸图标支持更好,建议将icon.png转换为包含16x16、32x32、64x64等尺寸的.ico文件,替换代码中的图标路径:
icon_path = os.path.join(os.path.dirname(__file__), "icon.ico")
3. 打包exe时明确指定图标
使用PyInstaller打包时,通过命令参数指定图标,确保系统能正确识别:
pyinstaller --onefile --windowed --icon=icon.ico your_script.py
4. 强制刷新窗口属性
在窗口显示后触发属性更新,强制系统刷新任务栏图标:
class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() # 原初始化代码 uic.loadUi(os.path.join(os.path.dirname(__file__), "DesignMainWindow.ui"), self) self.setWindowTitle("My title") icon_path = os.path.join(os.path.dirname(__file__), "icon.png") self.setWindowIcon(QtGui.QIcon(icon_path)) self.show() # 强制刷新窗口属性 self.setWindowFlags(self.windowFlags())
内容的提问来源于stack exchange,提问作者Flx
相关产品推荐
相关产品推荐

