Skip to content

PySide2extn is an Open Source Python Programming language extension for PySide2, which greatly enhances the capability of the PySide2 library with extra widgets and more.

License

Notifications You must be signed in to change notification settings

blackPantherOS/PyQt6extn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyQt6extn

An extension for the Python PyQt6 Qt Framework which expands the scope of the PyQt6 package with many different modern widgets. Current release has two widgets which are not natively present in the PyQt6 package.

RoundProgressBar

SpiralProgressBar

👉 Go to Wiki Page of Documentation for further Help

Getting Started

  • Install PyQt6extn using pip
pip install PyQt6extn
  • Build from source: After cloning the repo, go to the directory and open cmd or terminal
$ python3 setup.py sdist bdist_wheel
  • Install from .whl file.
pip install <PyQt6extn------.whl>file

To verify that installation is complete, print out the pip list and search for the PyQt6extn package.

👉 For more details go to the Official PyQt6extn Documentation Getting Started

Quick Demo

Quick demo help you to check weather you have successfully installed the Python Package. It comes with a UI loaded with all the widgets in this package with its different customized views. Users can easily differentiate the different styling elements used by widgets.

After installing the PyQt6extn the users can try out quick demo by:

  1. Open the cmd or terminal. Open Python
>> from PyQt6extn.demo import demo
>> demo.main()   #PRESS ENTER AND YOU WILL GET A DEMO APPLICATION

Examples

  • Default Round Progress Bar
import sys
from PyQt6 import QtCore, QtWidgets, QtGui

from PyQt6extn.RoundProgressBar import roundProgressBar #IMPORT THE EXTENSION LIBRARY

x = 0
p = 1

class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)

        self.hello = 'Round Progress Bar'
        self.button = QtWidgets.QPushButton("Click me to change Value")
        self.text = QtWidgets.QLabel("Round Progress Bar")
        self.text.setAlignment(QtCore.Qt.AlignCenter)
        
        #CREATING THE ROUND PROGRESS BAR OBJECT
        self.rpb = roundProgressBar()
        
        self.layout = QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.text)
        self.layout.addWidget(self.button)
        
        # ADDING THE ROUND PROGRESS BAR OBJECT TO THE                                             # BOTTOM OF THE LAYOUT
        self.layout.addWidget(self.rpb)

        self.setLayout(self.layout)
        self.button.clicked.connect(self.magic) #BUTTON PRESSED EVENT
        
    def magic(self):
        global x, p
        x = x   10*p
        if x==100:
            p = -1
        elif x==0:
            p = 1
        self.rpb.rpb_setValue(x)        #CHANGING THE VALUE OF THE PROGRESS BAR
        out_text = 'Round Progress Bar: '   str(x)   '%'
        self.text.setText(out_text)
        
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec_())

In this demo, we first created an object of the Round Progress Bar:

self.rpb = roundProgressBar() #CREATING THE ROUND PROGRESS BAR OBJECT

After that calling the Round Progress Bar object to display the value of progress using:

self.rpb.rpb_setValue(x) #CHANGING THE VALUE OF THE PROGRESS BAR

The rpb_setValue(value) takes an int as an argument and updates to change the value of the progress bar to the value given.

👉 For More examples on Round Progress Bar go to: Official PyQt6extn Documentation Examples

  • Default Spiral Progress Bar
import sys
from PyQt6 import QtCore, QtWidgets, QtGui

#IMPORT THE EXTENSION  LIBRARY
from PyQt6extn.SpiralProgressBar import spiralProgressBar 

x = 0
p = 1

class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)

        self.hello = 'Spiral Progress Bar'
        self.button = QtWidgets.QPushButton("Click me to change Value")
        self.text = QtWidgets.QLabel("Spiral Progress Bar")
        self.text.setAlignment(QtCore.Qt.AlignCenter)
        
        #CREATING THE SPIRAL PROGRESS BAR OBJECT
        self.spb = spiralProgressBar()    
        
        #ADDING WIDGETS TO THE VERTICAL LAYOUT
        self.layout = QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.text)
        self.layout.addWidget(self.button)
        
        # ADDING THE SPIRAL PROGRESS BAR OBJECT TO THE LAYOUT
        self.layout.addWidget(self.spb) 
        
        self.setLayout(self.layout)
        self.button.clicked.connect(self.magic) #BUTTON PRESSED EVENT
        
    def magic(self):
        global x, p
        x = x   10*p
        if x==100:
            p = -1
        elif x==0:
            p = 1
            
        #CHANGING THE VALUE OF THE 3 DEFAULT PROGRESS BAR
        self.spb.spb_setValue((x, x*2, x*3)) 
        
        out_text = 'Spiral Progress Bar: '  
        out_text = out_text   str(x)   '%, '   str(2*x)   '%, '   str(3*x)   '%'
        self.text.setText(out_text)
        
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec_())

  • Here first create a spiralProgressBar object and then add the progress bar to a layout and control the steps of the progress bar by the clicking of the button.

    self.spb = spiralProgressBar()		
  • Here we create a spiralProgressBar object instance and then use the self.spb as the spiral progress bar to influence its charactor like:

    self.spb.spb_setValue((x, x*2, x*3))
  • Since the default progress bar has 3 individual concentric circle, where each can be controlled individually, we pass a tuple containing the individual value for manipulating each concentric progress bar, to the function spb_setValue() , which only accepts a tuple of length equal to the number of concentric progress bar. Every function which can manipulate the properties of the Spiral Progress Bar uses the same idea. The order of entering the value are shown below:

Support

  • Please feel free to contribute to the project by sharing the idea you have, which is not natively present in the PyQt6 but essential for your workflow.

😃 Support like this motivates me to do more creative, work for Open Source.

About

PySide2extn is an Open Source Python Programming language extension for PySide2, which greatly enhances the capability of the PySide2 library with extra widgets and more.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%