Implementation of the PEP 3156 Event-Loop with Qt
Quamash requires Python 3.4 and either PyQt 5 or PySide.
pip install quamash
import sys import asyncio import time from PyQt5.QtWidgets import QApplication, QProgressBar from quamash import QEventLoop, QThreadExecutor app = QApplication(sys.argv) progress = QProgressBar() loop = QEventLoop(app) progress.setRange(0, 99) progress.show() @asyncio.coroutine def master(): yield from first_50() with QThreadExecutor(1) as exec: yield from loop.run_in_executor(exec, last_50) # TODO announce completion? @asyncio.coroutine def first_50(): for i in range(50): progress.setValue(i) yield from asyncio.sleep(.1) def last_50(): for i in range(50,100): loop.call_soon_threadsafe(progress.setValue, i) time.sleep(.1) with loop: loop.run_until_complete(master())
Quamash is tested with pytest; in order to run the test suite, just execute py.test on the commandline. The tests themselves are beneath the ‘tests’ directory.
You may use, modify, and redistribute this software under the terms of the BSD License. See LICENSE.
Tulip related projects are being named after other flowers, Quamash is one of the few flowers that starts with a “Q”.