Skip to main content

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

Project description

PyQt Loading Button

PyPI Python License Coverage Build

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

Main

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)

        # LoadingButton
        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)  # Simulate long task

Documentation

  • Setting the button text:
loading_button.setText('Click me!')
  • Setting the action connected to the clicked event:
def do_something():
    time.sleep(5)  # Simulate long task

loading_button.setAction(do_something)
  • Setting the animation type:
loading_button.setAnimationType(AnimationType.Circle)  # Circular animation
loading_button.setAnimationType(AnimationType.Dots)    # Dotted animation
  • Setting the animation speed:
# 2000 means each loop of the animation takes 2000 ms to complete
loading_button.setAnimationSpeed(2000)
  • Setting the animation width:
loading_button.setAnimationWidth(15)  # Total width of the animation is 15 px
  • Setting the animation stroke width:
loading_button.setAnimationStrokeWidth(3)  # Stroke width of the brush is 3 px
  • Setting the animation color:
loading_button.setAnimationColor(QColor(0, 0, 0))
  • Checking whether the action is currently being executed:
loading_button.isRunning()


All methods:

Method Description
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.

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

pyqt-loading-button-1.0.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

pyqt_loading_button-1.0.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file pyqt-loading-button-1.0.0.tar.gz.

File metadata

  • Download URL: pyqt-loading-button-1.0.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.3

File hashes

Hashes for pyqt-loading-button-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b9ab3428c482e65915c38369e9ed9028ea4dead4977ef729bb24402d01f79de9
MD5 b6ccc8a2493bc187453be6e1a10423a4
BLAKE2b-256 5c09e79f4bbc0f40ee790a773dcbaf783cfafd2e6db16421993713112728cd89

See more details on using hashes here.

File details

Details for the file pyqt_loading_button-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pyqt_loading_button-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 423abef5e286fa818d61f10298716a9559f0cc36dc38397e9eac85cc4bc33cb6
MD5 23b4f889d8578b1bde4a5569a7b22f96
BLAKE2b-256 4a09774de44140238399e4e39c573cf7322a8b8931e08ee949b60353a373baba

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