Я пишу программу таймера в Python, используя PyGTK. Это точно до сотых. Прямо сейчас, я использую постоянно обновляемую этикетку. Это проблема, потому что, если я изменяю размер окна во время работы таймера, Pango чаще всего бросает какую-то сумасшедшую ошибку, и моя программа завершается. Это не всегда одна и та же ошибка, но разные, которые я предполагаю, являются одной из форм неудачной ничьей. Кроме того, ярлык обновляется медленнее и медленнее, когда я увеличиваю размер шрифта.
Итак, мне интересно, есть ли более правильный способ отображения таймера. Есть ли более стабильный метод, чем постоянное обновление метки?
Я понял проблему. Это была действительно проблема с потоками. Я никогда бы не догадался об этом. Хитрость заключается в использовании gobject.timeout_add() для создания таймера вместо поточного цикла. Вот некоторая информация о gobject.timeout_add():
Не забудьте вернуть функцию True, или таймер остановится.
Обновление ярлыка должно работать совершенно надежно, поэтому я подозреваю, что вы делаете что-то еще неправильно. Вы используете потоки? Как выглядит ваш код? Насколько мала вы можете сконденсировать свою программу (путем удаления функциональности, а не путем запутывания кода), не устраняя проблему?