Metadata-Version: 2.1
Name: py-loading-screen
Version: 1.1.3
Summary: Animated loading screen
Home-page: https://github.com/a-s-akulov/py-loading-screen/
Author: a.s.akulov
Author-email: a.c.akulov@mail.ru
License: UNKNOWN
Description: # py-loading-screen
        
        Module for Python - animated loading screen
        Used modules:
          1. asyncio
          2. math
          3. time.sleep
          4. PyQt5.QtCore, PyQt5.QtWidgets, PyQt5.QtGui
        
        Tested on python: 3.7.4, windows: x32, x64
        
        **Installing:**
        
            $ pip install py-loading-screen
        
        **import:**
        
            $ from pyLoadingScreen import LoadingScreen
        
        If by some reason you have not python interpreter - you can see compiled demo-application (windows): 'example\compiled'
        
            LoadingScreen(PyQt5.QtWidgets.QFrame)
        
        # **Params:**
        
            texts = ['Loading', 'Loading.', 'Loading..', 'Loading...'],
            textUpdateDelay = 0.75,
        
            parentWidget = None,
            windowSize = (350, 350),
            mainStyleSheet = "background-color: black; color: rgb(80, 0, 255);",
            mainFrameWidth = 3,
            textLabelStyleSheet = "background-color: black; color: white; font: bold 18px;",
        
            animationType = "RoundRobin",       # Animation types available: "RoundRobin", "RibbonDance"
            animationDetailРЎoefficient = 20,
            animationRGBColor = (255, 0, 0),
            animationColorRainbow = True,
            animationColorRainbowStep = 2,
            animationColorRainbowMinValues = (0, 0, 0),
            animationColorRainbowMaxValues = (255, 255, 255),
            animationLineWidth = 3,
            animationScale = 0.95,
            animationCountStepsPerRound = 1440
        
        
        # **Notes:**
        
            1. I recommend running this in a new thread. Anyway, you need to create instance of LoadingScreen at main thread, then start worker function in any thread.
                If you want to start in new 'clear' thread - use 'worker' function, else if you wont to create task with asyncio - use 'worker_asyncio' coroutine.
                Variable with LoadingScreen instance must exist all time while script is running!
                - New thread start example:
                "self.screen = LoadingScreen()
                 self.thread = threading.Thread(target=self.screen.worker)
                 self.thread.start()"
                - Asyncio create task example:
                "self.screen = LoadingScreen()
                 loop = asyncio.get_event_loop()
                 asyncio.gather(self.screen.worker_async(), loop=loop)"
            
            2. To stop work use 'exit' attribute of LoadingScreen instance or create attribute '_exit' in 'worker' or 'worker_async' function.
                Work is stop after some time after signal to exit. You can check LoadingScreen instance state by 'isRunning' attribute.
                Example:
                "self.screen = LoadingScreen()
                 self.thread = threading.Thread(target=self.screen.worker)
                 self.thread.start()
                 self.screen.exit = True
                 self.screen.worker.__dict__['exit'] = True # Equivalent to 'self.screen.exit = True'
                 self.screen.worker_async.__dict__['exit'] = True # Equivalent to 'self.screen.exit = True', but in this case - will not take any effect, because 'worker' is using insted ('self.thread = threading.Thread(target=self.screen.worker)')
                 while True:
                     time.sleep(1)
                     if self.screen.isRunning:
                         print('LoadingScreen is still running)
                     else:
                         print('LoadingScreen is not running)
                         break"
        
            3. If you set parentWidget - don't forget add LoadingScreen to parentWidget's layout!
                Example:
                "self.screen = LoadingScreen(parentWidget=self.ui.myParentWidget)
                 myParentWidget.layout().addWidget(self.screen)"
            4. If animationColorRainbow == True, then param 'animationRGBColor' ignored
        
            5. If animationColorRainbow == False, then params ignored:
                animationColorRainbowStep,
                animationColorRainbowMinValues,
                animationColorRainbowMaxValues
            
            6. animationCountStepsPerRound - speed of rotation. animationCountStepsPerRound increases - rotation speed decreases
        
            7. By some reason i can't create instance of LoadingScreen in Spyder (Anaconda, Python 3.7.4), but in outer program this work fine.
        
        
        # **Versions:**
        
        ## **v1.1.3:**
        
        + Added 2nd animation type - "RibbonDance". Now available 2 animation types: "RoundRobin" (default) and "RibbonDance"
        + Added selection of animation type in example application
        + Improved animation quality by using float type coordinates instead of integer type
        + Renamed param "animationFacesCount" to "animationDetailРЎoefficient"
        
        
        ## **v1.0.3:**
        + Bug fixes
        
        
        ## **v1.0.2:**
        + Release on PyPI, now module is available using pip: 'pip install py-loading-screen'
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 5 - Production/Stable
Requires-Python: >=3.0
Description-Content-Type: text/markdown
