Форум сайта python.su
Прошу помочь с таким вопросом. Вчера весь вечер голову ломал как бы лучше поступить.
Есть Класс Frame наследующий wx.Frame, собственно он у меня создает главный фрейм, в нем я прописываю необходимые виджеты, хэндлеры и т.д.
Есть Класс Start который запускает мою основную программу. Класс Start так же организует многопоточность, запуская в работу заданное количество раз класс Work который в свою очередь наследует класс threading.Thread (Что естественно)
Мне нужно, что бы весь лог который в данный момент выводится через print в консоли, выводился через self.element.write в моем фрейме объекта wx.TextCtrl.
В данный момент при нажатии кнопки старт во фрейме, происходит событие, которое вызывает основную программу, и фрейм как бы “Замораживается” и никакие кнопки и прочие виджеты в нем не доступны, пока программа не завершит свою работу.
Что бы избежать этой проблемы я пробовал классу Start прописывать родителя в виде класса Frame и запускать одновременно 2 конструктора, получилось, сообщения класса Start теперь выводятся в wx.TextCtrl, но сообщения из класса Work по прежнему могут выводиться только в консоль, т.к. я не могу наследовать класс Frame раньше чем я запущу класс Start.
В общем получилась такая белиберда :)
Вопрос такой - как проще можно синхронизировать объект приложения wxPython с моей основной программой (особенно когда она крупная, и состоит из нескольких классов)
Спасибо за ответ.
Офлайн
Видимо GUI и этот некий Start должны делать свою работу в разных потоках.
Может быть поможет это. Или стоит погуглить на тему Long running tasks в WxPython.
Отредактировано Soteric (Дек. 22, 2012 20:00:26)
Офлайн