Как отображать постоянно обновляемый таймер с помощью PyGTK? - PullRequest
1 голос
/ 14 февраля 2010

Я пишу программу таймера на Python, используя PyGTK. Это с точностью до сотых места. Прямо сейчас я использую постоянно обновляемый лейбл. Это проблема, потому что если я изменяю размер окна во время работы таймера, Pango чаще всего выдает какую-то сумасшедшую ошибку, и моя программа завершается. Это не всегда одна и та же ошибка, но я полагаю, что это разные формы неудачного розыгрыша. Кроме того, ярлык обновляется все медленнее и медленнее по мере увеличения размера шрифта.

Итак, мне интересно, есть ли более правильный способ отображения таймера. Есть ли более стабильный метод, чем постоянное обновление метки?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2010

Я разобрался в проблеме. Это была действительно проблема с потоками. Я бы никогда не догадался об этом сам. Хитрость заключается в том, чтобы использовать gobject.timeout_add () для создания таймера вместо многопоточного цикла. Вот некоторая информация о gobject.timeout_add ():

http://faq.pygtk.org/index.py?req=show&file=faq01.021.htp

Не забудьте, что ваша функция вернула True, или таймер остановится.

2 голосов
/ 14 февраля 2010

Обновление метки должно работать совершенно надежно, поэтому я подозреваю, что вы делаете что-то еще неправильно. Вы используете темы? Как выглядит ваш код? Насколько малы вы можете сжать вашу программу (удаляя функциональность, а не запутывая код), не устраняя проблему?

...