CabbageDevelopment / qasync

Python library for using asyncio in Qt-based applications.
BSD 2-Clause "Simplified" License
307 stars 43 forks source link

No way to get Qt exit code (return value of QApplication.exec) #106

Open QQ80 opened 7 months ago

QQ80 commented 7 months ago

There is currently no way to access the Qt Application's return code, as returned by QApplication.exec. Right now it is saved as rslt in _QEventLoop.run_forever and returned, but this return value is never used, with both qasync.run and QEventLoop.run_until_complete.

Here is a sample app with a button that should cause the app to exit with code 1, but doesn't:

import asyncio
import sys
from PyQt6.QtWidgets import QPushButton
import qasync
from qasync import QApplication

async def main():
    app = QApplication.instance()

    app_quit_event = asyncio.Event()
    app.aboutToQuit.connect(app_quit_event.set)

    exit_btn = QPushButton("Exit")
    exit_btn.clicked.connect(lambda: app.exit(1))
    exit_btn.show()

    await app_quit_event.wait()
    #return app.exitCode??

sys.exit(qasync.run(main())) # qasync.run returns 0

Shouldn't there should be some way to grab the Qt exit code without bookkeeping it in user code?