如何在PyGTK ComboBox中处理慢渲染

时间:2010-12-22 17:34:05

标签: performance pygtk

我在PyGTK中实现了一个自定义CellRenderer,渲染时间比理想时间长。可能有多个图像需要缩放,因此当用户单击ComboBox时,它甚至不会显示弹出窗口,直到渲染完成。如果我可以显示弹出窗口,然后渲染图像,那就没问题了。您可以在Google Code Repository上查看。

我已经实现了缓存,因此在第一次加载后,它将从内存或磁盘中的单个图像加载,但第一次加载时每个单元需要2-4秒。

我想要实现的东西,包括,在应用程序加载时弹出组合框,以便强制它渲染图像。这在我运行的测试中似乎没有用。

我还尝试创建一个不可见的CairoContext和表面,但我要求它是一个gtk.gdk.CairoContext,我认为没有实际的小部件就可以启动它。有可能我可以在屏幕外的小部件中渲染它,但我不确定这是一个好主意,甚至可能。

2 个答案:

答案 0 :(得分:1)

我使用了一个在加载屏幕后使用idle_add渲染的Pixmap,因为它不会初始化窗口,直到它在屏幕上的窗口内呈现。您可以在themeselect.py中找到代码。查看load_theme_thumbs()和_get_pixmap()。

答案 1 :(得分:0)

如上所述,我认为将其渲染到屏幕外没有任何害处,而且出于类似的原因我这样做了。除非你做的事很奇怪,否则应该是可能的。

相关问题