PySide6开发Windows应用主窗口图标无法显示问题求助
PySide6主窗口图标无法显示问题解决
问题描述
学习Python4个月,用Qt Creator+PySide6开发简易应用,主窗口可正常启动,但设置主窗口图标始终无效。Windows10系统,所有项目文件为UTF-8编码,直接引用PNG或通过.qrc资源文件都无法显示图标。
当前代码
import sys from PySide6.QtGui import QIcon, QPixmap, Qt from PySide6.QtWidgets import QApplication, QMainWindow, QWidget import resources from ui_mainwindow import UiKonDiphone class MainWindow(QMainWindow, QWidget): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.ui = UiKonDiphone() self.ui.setupUi(self) icon = QIcon() icon.addPixmap(QPixmap(u":/icon/icons/main_icon_24.png")) self.setWindowIcon(icon) return if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
.qrc资源文件内容
<RCC> <qresource prefix="/icons"> <file>icon/main_icon_24.png</file> <file>icon/pause_icon_98.png</file> <file>icon/record_icon_98.png</file> </qresource> </RCC>
已尝试的无效方法
- 使用
self.setWindowIcon(QIcon())无效果 - 在Qt Creator中直接添加图标无效
- 修改UI类代码(存在缩进错误):
class UiKonDiphone(object): KonDiphone.setToolButtonStyle(Qt.ToolButtonFollowStyle) icon = QIcon() icon.addFile(u":/icons/icon/main_icon_24.png", QSize(), QIcon.Normal, QIcon.Off) KonDiphone.setProperty("Main_Icon", icon)
解决步骤
修正资源路径
你的.qrc中prefix为/icons,文件路径是icon/main_icon_24.png,因此完整资源路径应为:/icons/icon/main_icon_24.png,当前代码中路径写成了:/icon/icons/main_icon_24.png(多了一个icon前缀),先修正路径。确认资源文件已正确编译
执行命令编译.qrc文件:pyside6-rcc resources.qrc -o resources.py确保生成的
resources.py在项目根目录,且代码中import resources能正确导入。适配Windows系统特性
Windows下建议同时给应用和窗口设置图标,避免系统缓存问题:if __name__ == '__main__': app = QApplication(sys.argv) # 先给应用设置图标 app_icon = QIcon(":/icons/icon/main_icon_24.png") app.setWindowIcon(app_icon) window = MainWindow() window.setWindowIcon(app_icon) window.show() sys.exit(app.exec_())若仍无效,尝试重启应用或清理Windows图标缓存。
检查图片有效性
确保PNG图片格式正常,使用16x16、24x24、32x32等标准图标尺寸,避免非标准尺寸导致显示异常。规范UI类修改
不要修改Qt Creator自动生成的ui_mainwindow.py文件,图标设置逻辑统一放在主窗口类中,避免破坏自动生成的代码结构。
内容的提问来源于stack exchange,提问作者Kontekstor
相关产品推荐
相关产品推荐

