Пара вопросов, касающихся PyQt
Вопрос
У меня есть пара вопросов.
У меня есть алгоритм, который сгенерирует пару картинок на python, которые должны быть отображены в форме.Для этого я использую PyGt.Мой вопрос заключается в следующем:где я должен запустить свой код?Прямо из инициализатора?В этом случае, судя по тому, что я тестировал, форма не будет отображаться.
- Должен ли я настроить таймер в конструкторе, который запускает мой алгоритм на полсекунды позже?
- Будет запущен алгоритм заморозить мой форма делает невозможным, чтобы увидеть сама картина?Я не возражаю, что кнопки, флажки и т.д. зависают во время вычислений, пока текущее изображение все еще видно.
- Должен ли я использовать что-то вроде c # OnFormLoad()?Если да, то как я могу установить это?Через connect()?
- Как работает потоковая передача на python?Я слышал, но я не слишком уверен насчет этого, что это была боль, с которой пришлось иметь дело .Так ли это?В c # это так же просто, как написать 4 строки.Я бы хотел использовать это если возможно, но если это будет сложно реализовать, я могу жить без этого.
Спасибо
Решение
Возможно, вы захотите проверить Пример Мандельброта.
По сути, идея состоит в том, чтобы использовать рабочий поток для выполнения сложных вычислений (я бы предложил QThread для облегчения связи с основным потоком с помощью сигналов / слотов), затем, как только работа будет выполнена, выдать сигнал с вычисленными данными и попросить основной поток нарисовать его.Вы также можете отобразить изображение в рабочем потоке, если хотите.
Другие советы
Вы можете запустить алгоритм в отдельном потоке, поместив данные в очередь по завершении.Основной поток (GUI) будет периодически выполнять выборку очереди и отображать данные по мере их поступления.