Skip to main content

An easy to use LoadingWindow for Apps that needs pre-setups

Project description

LoadingWindow

Hit the ⭐ at our repo if this helped!!!

PyPI Downloads Downloads PyPI Latest Release License - MIT

Developed by LeeFuuChang © 2024

Install

pip3 install --upgrade LoadingWindow

Quick Demo

python3 -m LoadingWindow

Examples of How To Use

Creating A LoadingWindow
from LoadingWindow import LoadingWindow

window = LoadingWindow()
window.exec_()
Add Tasks to load
from LoadingWindow import LoadingWindow

import time

def fakeTask(loadingwindow: LoadingWindow, percentage):
    try:
        loadingwindow.text = f"Loading... [{percentage} out of 100]" # update loading status text
        loadingwindow.progress = percentage # update loading progress-bar value [0, 100]
        time.sleep(0.1)
        return True # return True if the loading finished successfully
    except Exception as e:
        return False # return False if the loading failed (maybe due to connection-error or other issues...)

window = LoadingWindow()

# define the tasks to load in a list
tasksToLoad = [lambda p=i:fakeTask(window, p) for i in range(101)]

# Set the tasks to load
window.setTasks(tasksToLoad)
# Update loading status (text, progress) by passing the `window` into the function

window.exec_()

Task Function Structure

def fakeTask(loadingwindow: LoadingWindow, ...):
    """
    @params:
        loadingwindow: LoadingWindow
        > pass the window object in so you can update the loading status to your user

    @returns:
        bool
        > True -> task success
        > False -> task failed
    """
    try:
        # ... Do the Setup

        loadingwindow.text = "Describe the loading process to your user"
        loadingwindow.progress = 64 # loading progress (%) [0, 100]

        return True
    except Exception as e:
        # ... Handle the Error
        return False

Useful APIs

LoadingWindow

Set the Size of the loading Window:
LoadingWindow.setSize(500, 300) # Width and Height
Set distance between the Window's Edge and the ProgressBar:
LoadingWindow.setPadding(30, 30) # Vertical and Horizontal
Set the Height of the ProgressBar:
LoadingWindow.setBarHeight(24)
Set the Loading Status Text's FontSize:
LoadingWindow.setFontSize(10) # this will auto re-render
# or
LoadingWindow.progressBar.setFontSize(10) # this will auto re-render
# or
LoadingWindow.progressBar.fontSize = 10
LoadingWindow.progressBar.updateStyle() # re-render
Set the Loading Status Text's FontColor:
LoadingWindow.setFontColor("#000000") # this will auto re-render
# or
LoadingWindow.progressBar.setFontColor("#000000") # this will auto re-render
# or
LoadingWindow.progressBar.fontColor = "#000000"
LoadingWindow.progressBar.updateStyle() # re-render
Set Loading Window's Icon:

this only works after packing into an executable

LoadingWindow.setIconPath("./Path/To/Your/Icon") # by path
LoadingWindow.setIconURL("./URL/To/Your/Icon") # by url
Set Loading Splash Image:
LoadingWindow.setSplashArtPath("./Path/To/Your/Image") # by path
LoadingWindow.setSplashArtURL("./URL/To/Your/Image") # by url
Set Loading Window FrameRate:
LoadingWindow.setFrameRate(30)
Set How long (in seconds) the loading windows stays after all tasks completed:
LoadingWindow.setPreserveTime(1)
Set Tasks to load:
LoadingWindow.setTasks([func1, func2, ...])
Set Tasks retries:
LoadingWindow.setTaskRetries(3)

ProgressBar

You can access ProgressBar instance by LoadingWindow.progressBar

Set the Loading Status Text
ProgressBar.setText("Loading . . .") # this will auto re-render
# or
LoadingWindow.progressBar.text = "Loading . . ."
LoadingWindow.progressBar.updateStyle() # re-render
Set the Loading Progress Value
ProgressBar.setProgress(0) # 0 ~ 100 # this will auto re-render
# or
LoadingWindow.progressBar.progress = 0 # 0 ~ 100
LoadingWindow.progressBar.updateStyle() # re-render
Set the Padding of ProgressBar Text

this changes including status text and progress text

ProgressBar.setPadding(0, 16) # Vertical and Horizontal # this will auto re-render
# or
LoadingWindow.progressBar.padding = (0, 16) # Vertical and Horizontal
LoadingWindow.progressBar.updateStyle() # re-render
Set the ProgressBar Text's FontSize:
ProgressBar.setFontSize(10) # this will auto re-render
# or
LoadingWindow.setFontSize(10) # this will auto re-render
# or
LoadingWindow.progressBar.fontSize = 10
LoadingWindow.progressBar.updateStyle() # re-render
Set the ProgressBar Text's FontColor:
ProgressBar.setFontColor("#000000") # this will auto re-render
# or
LoadingWindow.setFontColor("#000000") # this will auto re-render
# or
LoadingWindow.progressBar.fontColor = "#000000"
LoadingWindow.progressBar.updateStyle() # re-render
Set the ProgressBar filled area's Color
ProgressBar.setFilledColor("#69ca67")
Set the ProgressBar track's Color
ProgressBar.setBackgroundColor("#ffffff")

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

LoadingWindow-3.1.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file LoadingWindow-3.1.2-py3-none-any.whl.

File metadata

  • Download URL: LoadingWindow-3.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.9

File hashes

Hashes for LoadingWindow-3.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fb19a134f359bf3553a150644d35f49445661cbab1bf4310b9acb810a8f39a5f
MD5 9355af542560f07072a9449cea0c5108
BLAKE2b-256 fdfd2978721ff219042c67a57a9a9b5cfb5d0b2450b9bde058d5978ad000a07f

See more details on using hashes here.

Supported by

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