我正在使用PyQt编写一个Qt5应用程序。我想了解如何改变整个应用程序的样式。
旧的Qt4调用如下:
app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create('Cleanlooks'))
和这里建议的方法什么也不做
它们被弃用了吗?https://blog.qt.io/blog/2012/10/30/cleaning-up-styles-in-qt5-and-adding-fusion/
谢谢!
可能是Cleanlooks
在您的系统上不再可用。通过QStyleFactory.keys()
,您可以询问系统上可用的样式。在Ubuntu 16.04和pyqt5上,我只得到:
['Windows', 'GTK+', 'Fusion']
编辑:在这里你可以找到qstyleplugin
包含6个额外的样式,你必须自己编译
- 编辑:
在ubuntu 16.04和python3.5上,我通过在QT5上安装styleplugins并从源代码编译pyqt5来使其工作:
install QT 5.7 by onlineinstaller
在安装目录搜索qmake
,在我的情况下/opt/Qt/5.7/gcc_64/bin/qmake
下载qtstyleplugin到任意目录git clone https://code.qt.io/qt/qtstyleplugins.git
并安装:
cd qtstyleplugins
/opt/Qt/5.7/gcc_64/bin/qmake # the qmake from the fresh installation
make
make install
现在在/opt/Qt/5.7/gcc_64/plugins/
中有一个文件夹" styles "包含了额外的样式。
下载sip-source,编译并安装
下载pyqt5-source,编译并安装它,在步骤python3 configure.py
中,通过--qmake
-选项提供QT5-Installation中的qmake,并在输出中查找缺少的依赖项。
现在可以使用以下样式:
['bb10dark', 'bb10bright', 'cleanlooks', 'cde', 'motif', 'plastique', 'Windows', 'Fusion']
i got an sip-error:
RuntimeError: the sip module implements API v11.0 to v11.2 but the PyQt5.QtCore module requires API v11.3
要防止它,请在安装sip之前运行sudo apt-get purge python3-sip
,如下所示