将 QStyles 添加到 Pyqt5 [英] Add QStyles to Pyqt5

查看:87
本文介绍了将 QStyles 添加到 Pyqt5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将我的 GUI 应用程序从 PyQt4 转换为 PyQt5.但是在 PyQt4 中,我们得到了很多 QStyles,如 plastiqueCleanlooks 等.但在 PyQt5 中,我们只有 Fusion 样式以及一些普通的旧 Windows 样式.

I'm converting my GUI application from PyQt4 to PyQt5. But in PyQt4 we get so many QStyles like plastique, Cleanlooks etc. But in PyQt5 we have only Fusion style along with some plain old Windows styles.

我们如何为 PyQt5 添加更多自定义样式?

How can we add more custom styles to PyQt5?

推荐答案

Qt 的许多功能都是通过插件实现的,样式也是如此.所以在这种情况下你必须编译qtstyleplugins:

Many of Qt's functionalities are implemented by plugins, and that is the case with styles. So in this case you must compile qtstyleplugins:

您可以使用以下程序来编译qtstyleplugins:

You can use the following procedure to compile qtstyleplugins:

  • 在 Windows 上安装 MSVC 2019,在 MacOS 上安装 XCode,在 Ubuntu 上安装 build-essential(如果是其他发行版,那么您应该寻找等效版本).

  • Install MSVC 2019 on Windows, XCode on MacOS and build-essential on Ubuntu (in case of another distro then you should look for the equivalent).

安装Qt,与编译pyqt5的版本相同:python -c "from PyQt5.QtCore import QT_VERSION_STR;print('Qt version', QT_VERSION_STR)".

Install Qt, the same version with which pyqt5 was compiled: python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)".

克隆存储库,然后通过执行以下命令编译它(在 Windows 的情况下,您必须将 make 更改为 nmake):

Clone the repository and then compile it by executing the following commands (in the case of windows you must change make to nmake):

git clone https://code.qt.io/qt/qtstyleplugins.git
cd qtstyleplugins
qmake 
make 
make install

这些命令将在文件夹qtstyleplugins/plugins/styles/"中生成二进制文件(Linux 为 .so,Windows 为 .dll,MacOS 为 .dylib).您必须复制到路径:

These commands will generate the binaries (.so for Linux, .dll for windows and .dylib for MacOS) in folder "qtstyleplugins/plugins/styles/" that you must copy to the path:

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 操作:


To facilitate the work I have created a github action that generates the binaries:

63477276.yml

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 }}

您可以从此处下载 pyqt5 5.15 的二进制文件.

and you can download the binaries for pyqt5 5.15 from here.

测试:

python -c "from PyQt5 import QtWidgets; app = QtWidgets.QApplication([]); print(QtWidgets.QStyleFactory.keys())"

输出:

['bb10dark', 'bb10bright', 'cleanlooks', 'cde', 'motif', 'plastique', 'windowsvista', 'Windows', 'Fusion']

这篇关于将 QStyles 添加到 Pyqt5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆