Панель бесконечного обновления wxpython вызывает сбой программы - PullRequest
0 голосов
/ 30 марта 2012

Я столкнулся с проблемой при попытке использовать Wxpython + OpenCV для реализации распознавания лиц.

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

Но когда я запускаю программу, если я нажимаю кнопку пуска, программа сворачивается через 2 секунды. И кнопка «Стоп» кажется бесполезной даже до краха программы.

Я думаю, что это проблема потока. Поскольку весь пользовательский интерфейс представляет собой большой цикл, и если мне нужно постоянно обновлять один из компонентов, например панель, мне нужно использовать другой поток, кроме основного потока.

Это правильно? Если да, то как мне быть? Если нет, пожалуйста, дайте мне несколько дополнительных советов.

спасибо миллион ~! ;)

1 Ответ

1 голос
/ 30 марта 2012

Вы не должны обновлять, если вам не нужно. Обновление без нужды - это не путь. Обновляйте только когда что-то меняется. Если вы используете поток для обновления GUI-компонента wxPython, вам необходимо обязательно использовать потоковые безопасные методы wxPython, такие как wx.CallAfter, wx.CallLater или wx.PostEvent. Для получения дополнительной информации о потоках и wxPython смотрите любое из следующего:

...