gpt4 book ai didi

python - 将 QStyles 添加到 Pyqt5

转载 作者:行者123 更新时间:2023-12-04 09:04:38 31 4
gpt4 key购买 nike

我正在将我的 GUI 应用程序从 PyQt4 转换为 PyQt5。但是在 PyQt4 中,我们得到了很多 QStyle,比如 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/”中生成二进制文件(Linux 为 .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 操作来生成二进制文件:
    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 }}
    您可以从 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']

    关于python - 将 QStyles 添加到 Pyqt5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63477276/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com