Программа asyncio с qasync и PySide6 – когда я могу начать планировать задачи в цикле событий?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Программа asyncio с qasync и PySide6 – когда я могу начать планировать задачи в цикле событий?

Сообщение Anonymous »

Я запускаю свою программу, используя следующее:
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как оптимально планировать параллельные задачи
    Anonymous » » в форуме C#
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Как динамически планировать задачи, используя запросы на колбы (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
  • Pyside6-uic: термин «pyside6-uic» не распознается как имя командлета (при использовании Windows 11 и Pycharm).
    Anonymous » » в форуме Python
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»