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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:27:16