将 QStyles 添加到 Pyqt5
Add QStyles to Pyqt5
我正在将我的 GUI 应用程序从 PyQt4 转换到 PyQt5。但是在 PyQt4 中,我们得到了很多 QStyles,例如 plastique
、Cleanlooks
等。但是在 PyQt5 中,我们只有 Fusion
样式以及一些普通的旧 Windows 样式。
如何向 PyQt5 添加更多自定义样式?
Qt的很多功能都是通过插件实现的,样式也是如此。所以在这种情况下你必须编译qtstyleplugins:
您可以使用以下程序编译qtstyleplugins:
在 Windows 上安装 MSVC 2019,在 MacOS 上安装 XCode,在 Ubuntu 上安装 build-essential(如果是其他发行版,则您应该寻找等价物)。
安装Qt,与编译pyqt5的版本相同:python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"
.
克隆存储库,然后通过执行以下命令编译它(在windows的情况下,您必须将 make 更改为 nmake):
git clone https://code.qt.io/qt/qtstyleplugins.git
cd qtstyleplugins
qmake
make
make install
这些命令将在您必须复制到的文件夹“qtstyleplugins/plugins/styles/”中生成二进制文件([=59= 的 .so,windows 的 .dll 和 MacOS 的 .dylib)路径:
python -c "import os; from PyQt5 import QtCore; print(os.path.join(QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PluginsPath), 'styles'))"
输出:
/home/qtuser/Documents/qt_venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/styles
为了方便工作,我创建了一个生成二进制文件的 github 操作:
name: question_63477276
on: [push]
jobs:
ci:
name: ${{ matrix.os.name }} Python-${{ matrix.python }} Qt-${{ matrix.qt }}
runs-on: ${{ matrix.os.runs-on }}
strategy:
fail-fast: false
matrix:
os:
- name: Windows
extension: "*.dll"
runs-on: windows-latest
- name: Linux
extension: "*.so"
runs-on: ubuntu-latest
- name: MacOS
extension: "*.dylib"
runs-on: macos-latest
python: [3.6, 3.7, 3.8]
qt: [5.15.0]
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install Linux dependencies
if: matrix.os.name == 'Linux'
run: |
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
architecture: x64
- name: install pyqt5
run: pip install pyqt5
- name: before
uses: GabrielBB/xvfb-action@v1.2
with:
run: python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ matrix.qt }}
dir: ${{ github.workspace }}/qt/
- name: clone qtstyleplugins
run: git clone https://code.qt.io/qt/qtstyleplugins.git
- name: compile qtstyleplugins in Windows
if: matrix.os.name == 'Windows'
shell: cmd
run: |
call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
cd qtstyleplugins
qmake
nmake
nmake install
- name: compile qtstyleplugins in Linux or MacOS
if: matrix.os.name == 'Linux' || matrix.os.name == 'MacOS'
run: |
cd qtstyleplugins
qmake
make
make install
- name: copy binaries
run: python questions/63477276/search_binaries.py qtstyleplugins/plugins/styles/
- name: after
uses: GabrielBB/xvfb-action@v1.2
with:
run: python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
- name: upload
uses: actions/upload-artifact@v2
with:
path: qtstyleplugins/plugins/styles/${{ matrix.os.extension }}
name: qtstyleplugins-${{ matrix.os.name }}-Python${{ matrix.python }}-Qt${{ matrix.qt }}
您可以从 here 下载 pyqt5 5.15 的二进制文件。
测试:
python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
输出:
['bb10dark', 'bb10bright', 'cleanlooks', 'cde', 'motif', 'plastique', 'windowsvista', 'Windows', 'Fusion']
我正在将我的 GUI 应用程序从 PyQt4 转换到 PyQt5。但是在 PyQt4 中,我们得到了很多 QStyles,例如 plastique
、Cleanlooks
等。但是在 PyQt5 中,我们只有 Fusion
样式以及一些普通的旧 Windows 样式。
如何向 PyQt5 添加更多自定义样式?
Qt的很多功能都是通过插件实现的,样式也是如此。所以在这种情况下你必须编译qtstyleplugins:
您可以使用以下程序编译qtstyleplugins:
在 Windows 上安装 MSVC 2019,在 MacOS 上安装 XCode,在 Ubuntu 上安装 build-essential(如果是其他发行版,则您应该寻找等价物)。
安装Qt,与编译pyqt5的版本相同:
python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"
.克隆存储库,然后通过执行以下命令编译它(在windows的情况下,您必须将 make 更改为 nmake):
git clone https://code.qt.io/qt/qtstyleplugins.git cd qtstyleplugins qmake make make install
这些命令将在您必须复制到的文件夹“qtstyleplugins/plugins/styles/”中生成二进制文件([=59= 的 .so,windows 的 .dll 和 MacOS 的 .dylib)路径:
python -c "import os; from PyQt5 import QtCore; print(os.path.join(QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PluginsPath), 'styles'))"
输出:
/home/qtuser/Documents/qt_venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/styles
为了方便工作,我创建了一个生成二进制文件的 github 操作:
name: question_63477276
on: [push]
jobs:
ci:
name: ${{ matrix.os.name }} Python-${{ matrix.python }} Qt-${{ matrix.qt }}
runs-on: ${{ matrix.os.runs-on }}
strategy:
fail-fast: false
matrix:
os:
- name: Windows
extension: "*.dll"
runs-on: windows-latest
- name: Linux
extension: "*.so"
runs-on: ubuntu-latest
- name: MacOS
extension: "*.dylib"
runs-on: macos-latest
python: [3.6, 3.7, 3.8]
qt: [5.15.0]
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install Linux dependencies
if: matrix.os.name == 'Linux'
run: |
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
architecture: x64
- name: install pyqt5
run: pip install pyqt5
- name: before
uses: GabrielBB/xvfb-action@v1.2
with:
run: python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ matrix.qt }}
dir: ${{ github.workspace }}/qt/
- name: clone qtstyleplugins
run: git clone https://code.qt.io/qt/qtstyleplugins.git
- name: compile qtstyleplugins in Windows
if: matrix.os.name == 'Windows'
shell: cmd
run: |
call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
cd qtstyleplugins
qmake
nmake
nmake install
- name: compile qtstyleplugins in Linux or MacOS
if: matrix.os.name == 'Linux' || matrix.os.name == 'MacOS'
run: |
cd qtstyleplugins
qmake
make
make install
- name: copy binaries
run: python questions/63477276/search_binaries.py qtstyleplugins/plugins/styles/
- name: after
uses: GabrielBB/xvfb-action@v1.2
with:
run: python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
- name: upload
uses: actions/upload-artifact@v2
with:
path: qtstyleplugins/plugins/styles/${{ matrix.os.extension }}
name: qtstyleplugins-${{ matrix.os.name }}-Python${{ matrix.python }}-Qt${{ matrix.qt }}
您可以从 here 下载 pyqt5 5.15 的二进制文件。
测试:
python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"
输出:
['bb10dark', 'bb10bright', 'cleanlooks', 'cde', 'motif', 'plastique', 'windowsvista', 'Windows', 'Fusion']