Пара вопросов относительно PyQt

У меня есть несколько вопросов.

У меня есть алгоритм, который сгенерирует пару картинок на питоне, которые должны отображаться в форме. Я использую PyGt для этого. Мой вопрос: где я должен запустить свой код? Прямо из инициализатора? В этом случае из того, что я тестировал, форма не появится.

  • Должен ли я настроить таймер в конструкторе, который запускает мой алгоритм на полсекунды позже?
  • Не заморозит ли работающий алгоритм мою форму, что сделает невозможным просмотр самой картинки? Я не возражаю против того, что кнопки, флажки и т. д. зависают во время вычислений, пока текущее изображение все еще видно.
  • Должен ли я использовать что-то вроде С# OnFormLoad()? Если да, то как я могу установить его? Через коннект()?
  • Как работает многопоточность на питоне? Я слышал, но я не слишком в этом уверен, что с этим было трудно иметь дело. Это? В С# это так же просто, как написать 4 строки. Я хотел бы использовать его, если это возможно, но если это будет сложно реализовать, я могу жить без него.

Спасибо


person devoured elysium    schedule 11.11.2009    source источник


Ответы (2)


Вы можете проверить пример Мандельброта.

В основном идея состоит в том, чтобы использовать рабочий поток для выполнения тяжелых вычислений (я бы предложил QThread для облегчения связи с основным потоком с помощью сигналов/слотов), а затем, как только работа будет выполнена, выдать сигнал с вычисленными данными и покрасьте основной поток. Вы также можете визуализировать изображение в рабочем потоке, если хотите.

person Idan K    schedule 11.11.2009

Вы можете запустить алгоритм в отдельном потоке, поместив данные в очередь по завершении. Основной поток (GUI) будет периодически выбирать очередь и отображать данные по мере их поступления.

person Eli Bendersky    schedule 11.11.2009