Skip to main content

PyQt6 UI templates resource converter

Project description

pyqt6rc

GitHub_repo

This library offers scripts to correct resource paths in files generated by the pyuic6 command. Since PyQt6 does not include the pyrcc6 script for converting resources, this package serves that purpose. In the current PyQt6 implementation, the .py files created by the pyuic6 command contain incorrect resource paths.

UPDATE: As of PyQt-6.3.1 it's possible to use Qt’s resource system again. We can use pyside6-rcc to convert rcc files into py.
Source for this solution can be found in StackOverflow answer.

Provided scripts are converting .ui files into .py files using three different ways:

  • Using pyside6-rcc script to convert rcc files into py and pyuic6 to convert all ui files [Use pyside6rc]
  • Native >= python3.7 solution using importlib [Use pyqt6rc].
  • Use of importlib_resources, for compatibility with Python3.6+ [Use pyqt6rc with -c option]
  • Adding resource search path using QtCore.QDir.addSearchPath() and modifying generated prefixes [Use pyqt6sp]

More on this topic can be found on StackOverflow.

From version 4.0, parameter -p, --package was removed. Pyqt6rc now determines package name automatically by crawling parent folders and looking for \_\_init\_\_.py file.

Conversion

Generated template using pyside6rc script:

import myPackage.resources.icons  # noqa

Generated template using pyuic6 script:

icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/icons/icon1.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)

Generated template using pyqt6rc script:

from importlib.resources import path

icon = QtGui.QIcon()
with path("myPackage.resources.icons", "icon1.png") as f_path:
    icon.addPixmap(QtGui.QPixmap(str(f_path)), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)

Generated template using pyqt6rc (-c, --compatible) script:

from importlib_resources import path

icon = QtGui.QIcon()
with path("myPackage.resources.icons", "icon1.png") as f_path:
    icon.addPixmap(QtGui.QPixmap(str(f_path)), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)

Generated template using pyqt6sp script:

import os
from os.path import dirname, normpath
from PyQt6.QtCore import QDir

prefix_resources = [('icons', '../resources/')]
for prefix, resource in prefix_resources:
    sp = QDir.searchPaths(prefix)
    QDir.setSearchPaths(prefix, set(sp + [normpath(os.path.join(dirname(__file__), resource))]))

icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("icons:icon1.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)

Usage examples

Package structure example

myPackage
│   __init__.py    
│
└───resources
|   |   __init__.py
│   │   image1.png
│   │   image2.png
│   │   resources.qrc
|   |   ...
|   |
|   └───icons
│       │   __init__.py
│       │   icon1.png
│       │   icon2.png
│       │   ...
│   
└───templates
    │   template1.ui
    │   template2.ui

Batch convert all .ui files located in the templates directory using pyside6-rcc

pyside6rc /myPackage/templates

Batch convert all .ui files located in the templates directory using pyside6-rcc
Without writing import line of resource package to ui files (-niw)

pyside6rc -niw /myPackage/templates

Batch convert all .ui files located in the templates directory using pyside6-rcc
Without ui to py conversion (-npc)

pyside6rc -npc /myPackage/templates

Batch convert all .ui files located in the templates directory using pyside6-rcc

pyside6-rcc /myPackage/templates

Batch convert all .ui files located in the templates directory

pyqt6rc /myPackage/templates

Convert template1.ui only

pyqt6rc /myPackage/templates/template1.ui

Convert template1.ui and save it in /tmp directory

pyqt6rc /myPackage/templates/template1.ui -o /tmp

Batch convert all .ui files located in templates directory using importlib_resources

pyqt6rc /myPackage/templates -c

Batch convert all .ui files located in templates directory using setSearchPaths method

pyqt6sp /myPackage/templates

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyqt6rc-0.7.0.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

pyqt6rc-0.7.0-py3-none-any.whl (35.7 kB view details)

Uploaded Python 3

File details

Details for the file pyqt6rc-0.7.0.tar.gz.

File metadata

  • Download URL: pyqt6rc-0.7.0.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.9.6 Darwin/24.1.0

File hashes

Hashes for pyqt6rc-0.7.0.tar.gz
Algorithm Hash digest
SHA256 a6440923858cda57c50ae2f21e9f9d01dbb2c4bef59c579d07f9e6194763010f
MD5 78077f192e6cefc17e1aae94b451c2b6
BLAKE2b-256 d91e26986246c73eb379aea6e2eefb07758285a051c44465dbb9dacae6720da7

See more details on using hashes here.

File details

Details for the file pyqt6rc-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: pyqt6rc-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 35.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.9.6 Darwin/24.1.0

File hashes

Hashes for pyqt6rc-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42636335e242919056051f38d7c6031c2b1f208cd7294fde35376c4765743dda
MD5 0cfdbbd13de473fe92cd4092e24138fc
BLAKE2b-256 9dff2b827cc700f54b8055ea8694d19a48c3f1bc5b3e1da549be9c286a304ccd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page