PyQt Loading Button

A QPushButton with built-in loading animations for PyQt and PySide.

About
The widget functions exactly like PyQt's regular QPushButton
with the only exception being the way methods are connected to the clicked
event. Normally you would connect a method to the clicked
event by using the connect()
method. On this button you use the setAction()
method instead, passing a callable object as its parameter the same way you would do with the connect()
method. The method will then get executed in a QThread
, allowing the button to display a loading animation.
Installation
pip install pyqt-loading-button
Example
import time
from PyQt6.QtGui import QColor
from PyQt6.QtWidgets import QMainWindow
from pyqt_loading_button import LoadingButton, AnimationType
class Window(QMainWindow):
def __init__(self):
super().__init__(parent=None)
self.button_1 = LoadingButton(self)
self.button_1.setText('Click me!')
self.button_1.setAnimationType(AnimationType.Circle)
self.button_1.setAnimationSpeed(2000)
self.button_1.setAnimationColor(QColor(0, 0, 0))
self.button_1.setAnimationWidth(15)
self.button_1.setAnimationStrokeWidth(3)
self.button_1.setAction(self.do_something)
def do_something(self):
time.sleep(5)
Documentation
loading_button.setText('Click me!')
- Setting the action connected to the clicked event:
def do_something():
time.sleep(5)
loading_button.setAction(do_something)
- Setting the animation type:
loading_button.setAnimationType(AnimationType.Circle)
loading_button.setAnimationType(AnimationType.Dots)
- Setting the animation speed:
loading_button.setAnimationSpeed(2000)
- Setting the animation width:
loading_button.setAnimationWidth(15)
- Setting the animation stroke width:
loading_button.setAnimationStrokeWidth(3)
- Setting the animation color:
loading_button.setAnimationColor(QColor(0, 0, 0))
- Checking whether the action is currently being executed:
loading_button.isRunning()
All methods:
text(self) | Get the current button text |
setText(self, text: str) | Set the button text |
setAction(self, action: callable) | Set the action connected to the clicked event |
isRunning(self) | Get whether the action is currently being executed |
getAnimationType(self) | Get the current animation type |
setAnimationType(self, animation_type: AnimationType) | Set the animation type |
getAnimationSpeed(self) | Get the current animation speed (time it takes the animation to complete one loop in ms) |
setAnimationSpeed(self, speed: int) | Set the animation speed (time it takes the animation to complete one loop in ms) |
getAnimationWidth(self) | Get the current width of the animation |
setAnimationWidth(self, width: int) | Set the width of the animation |
getAnimationStrokeWidth(self) | Get the current width of the brush stroke |
setAnimationStrokeWidth(self, width: int) | Set the width of the brush stroke |
getAnimationColor(self) | Get the current animation color |
setAnimationColor(self, color: QColor) | Set the animation color |
License
This software is licensed under the MIT license.