Я запускаю свою программу, используя следующее:
async def main():
logger.info('client app starting')
app = QApplication(sys.argv)
main = MainWindow()
main.show()
loop = QEventLoop(app)
with loop:
loop.run_forever()
if __name__ == '__main__':
initLogging(fileName=os.path.join('log','client.log'))
asyncio.run(main())
В методе __init__ MainWindow я планировал некоторые задачи в цикле событий. Но они не запускались, пока я не закрыл главное окно. Затем я попытался запланировать их в событии showEvent в главном окне, но это тоже не сработало. Затем я активировал его с помощью кнопки, и он сработал, но это нежелательно, потому что я хочу, чтобы они запускались автоматически. Когда я могу начать добавлять задачи в цикл событий и какое событие я могу для этого использовать?
python 3.12
PySide 6.7.3
qasync 0.27.1
Вот рабочий пример. Обратите внимание, что hello печатается после закрытия главного окна.
import sys
import asyncio
from qasync import QApplication, QEventLoop
from PySide6.QtWidgets import QMainWindow, QLabel
async def hello():
print('hello')
class MainWindow(QMainWindow):
def __init__(self) -> None:
super().__init__()
self.setWindowTitle('Client App')
task = asyncio.create_task(hello())
self.label = QLabel('Main Window')
self.setCentralWidget(self.label)
def showEvent(self, event):
print('main window show event')
task = asyncio.create_task(hello())
def focusInEvent(self, event):
print('main window focus in event')
async def main():
print('app starting')
app = QApplication(sys.argv)
main = MainWindow()
main.show()
loop = QEventLoop(app)
with loop:
loop.run_forever()
if __name__ == '__main__':
asyncio.run(main())
Подробнее здесь: https://stackoverflow.com/questions/790 ... tasks-in-t
Программа asyncio с qasync и PySide6 – когда я могу начать планировать задачи в цикле событий? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как динамически планировать задачи, используя запросы на колбы (apscheduler)?
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Asyncio Async Funcitons вешает с Asyncio.gather. (Код работает без Asyncio.gather)
Anonymous » » в форуме Python - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Событие Pytest asyncio привязано к другому циклу событий, цикл событий закрыт
Anonymous » » в форуме Python - 0 Ответы
- 43 Просмотры
-
Последнее сообщение Anonymous
-