PyQt5程序运行显示Windows Vista风格而非Win10风格怎么解决?
解决PyQt5运行时界面样式老旧问题
问题核心是PyQt5默认未启用Windows 10的现代界面样式,只需在代码中添加样式设置即可解决:
方案1:使用Qt跨平台现代样式(Fusion)
Fusion是Qt官方的跨平台现代样式,在所有系统上都能呈现一致的简洁外观,修改代码如下:
import os import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtCore import Qt class UI(QMainWindow): def __init__(self): super().__init__() uic.loadUi(os.path.join(sys.path[0], 'untitled.ui'), self) if __name__ == '__main__': # 启用高DPI缩放(可选,解决高分屏界面模糊问题) QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) app = QApplication(sys.argv) # 设置Fusion现代样式 app.setStyle('Fusion') ex = UI() ex.show() sys.exit(app.exec())
方案2:使用Windows原生现代样式
如果想要完全贴合Windows系统的原生外观,可以调用系统样式工厂创建对应样式:
import os import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication, QMainWindow, QStyleFactory from PyQt5.QtCore import Qt class UI(QMainWindow): def __init__(self): super().__init__() uic.loadUi(os.path.join(sys.path[0], 'untitled.ui'), self) if __name__ == '__main__': QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) app = QApplication(sys.argv) # 设置Windows原生样式(Win10及以上会自动适配系统现代外观) app.setStyle(QStyleFactory.create('WindowsVista')) ex = UI() ex.show() sys.exit(app.exec())
说明:Qt中没有单独的Windows10样式标识符,WindowsVista样式在Windows 10/11上会自动适配为系统的现代界面风格。若仍有显示问题,建议检查并升级到最新版本的PyQt5,旧版本可能存在样式适配缺陷。
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

