通過QStyleFactory.keys()可獲取用於setStyle的有效值,本例程中包含“Windows”,“WindowsXP”,“WindowsVista”,“Fusion”四種風格,此外,還使用了setStyleSheet對一款黑色主題“QDarkStyleSheet”進行加載,即可以在以上5種界面風格之間切換。
效果如下:
代碼如下:
import sys
from os.path import join, dirname, abspath
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow, QStyleFactory
import qdarkstyle
_UI = join(dirname(abspath(__file__)), 'mainwindow.ui')
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
uic.loadUi(_UI, self)
class Application(QApplication):
def __init__(self, argv):
QApplication.__init__(self, argv)
def _slot_setStyle(self):
app.setStyleSheet('')
tmp = self.sender().objectName()[6:]
if tmp in QStyleFactory.keys():
app.setStyle(tmp)
elif tmp == 'Qdarkstyle':
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
if __name__ == '__main__':
app = Application(sys.argv)
w = MainWindow()
w.actionWindows.triggered.connect(app._slot_setStyle)
w.actionWindowsXP.triggered.connect(app._slot_setStyle)
w.actionWindowsVista.triggered.connect(app._slot_setStyle)
w.actionFusion.triggered.connect(app._slot_setStyle)
w.actionQdarkstyle.triggered.connect(app._slot_setStyle)
w.show()
sys.exit(app.exec_())