Я пишу приложение для платформы Maemo, используя pygtk, и скорость рендеринга древовидного представления кажется проблемой. Поскольку приложение является медиа-контроллером, я использую анимацию перехода в пользовательском интерфейсе. Эти анимации передвигают элементы управления при перемещении по пользовательскому интерфейсу. Проблема с управлением деревом заключается в том, что он медленный.
Простое перемещение виджета по центру экрана не так уж и медленно, но при экспонировании ячеек частота кадров действительно падает. Что делает это еще более раздражающим, так это то, что если единственная видимая область - это строка заголовка с метками строк, частота кадров остается под контролем.
Судя по этому, я подозреваю, что дерево GTK снова рисует полные ячейки каждый раз, когда экспонируется один ряд пикселей. Есть ли способ заставить GTK рисовать весь виджет в некотором буфере, даже если его части находятся вне экрана, а затем использовать буфер для рисования виджета при анимации?
Также есть ли разница между использованием окна просмотра и прокруткой вверх и использованием панели «Макет» и перемещением виджетов вниз? Я бы предположил, что Viewport работает быстрее, но я не увидел реальной разницы, когда попробовал обе версии.
Я понимаю, что это не обязательно то, для чего был создан GTK. Другая альтернатива, которую я пробовал, - это pygame, но я бы предпочел реализацию более высокого уровня, в которой встроена обработка событий на основе виджетов. Кроме того, pygtk имеет преимущество в том, что он работает в Windows и в окне, что облегчает разработку.