我正在使用 pygtk 为 Maemo 平台编写应用程序,树视图的渲染速度似乎是个问题。由于该应用程序是一个媒体控制器,因此我在 UI 中使用了过渡动画。这些动画在 UI 中移动时将控件滑入视图。树控件的问题是它很慢。
只是在屏幕中间移动小部件并没有那么慢,但如果单元格被暴露,帧率真的会下降。更烦人的是,如果唯一暴露的区域是带有行标签的标题行,那么帧率仍然受到控制。
由此判断,我怀疑每次曝光单行像素时,GTK 树视图都会再次绘制完整的单元格。有没有办法以某种方式强制 GTK 将整个小部件绘制到某个缓冲区中,即使它的一部分不在屏幕上,然后在制作动画时使用缓冲区来绘制小部件?
使用视口和向上滚动以及使用布局面板和向下移动小部件之间也有区别吗?我本以为 Viewport 会更快,但是当我尝试这两个版本时,我并没有发现真正的区别。
我知道这不一定是 GTK 的创建目的。我尝试过的其他替代方法是 pygame,但我更喜欢内置基于小部件的事件处理的更高级别的实现。pygtk 还具有在 Windows 和窗口中运行的好处,因此开发更容易。