Performance 如何在PyGTK组合框中处理慢速渲染

Performance 如何在PyGTK组合框中处理慢速渲染,performance,pygtk,Performance,Pygtk,我已经在PyGTK中实现了一个定制的CellRenderer,它的渲染时间可能比理想的要长。可能有多个图像需要缩放,因此当用户单击组合框时,它甚至不会显示弹出窗口,直到渲染完成。如果我可以显示弹出窗口,然后渲染图像,那就好了。你可以在我的电脑上看 我已经实现了缓存,所以在它第一次加载之后,它将从内存或磁盘的单个映像加载,但是第一次加载每个单元可能需要2-4秒 我想实现的东西包括,在应用程序加载时弹出组合框,以便强制它渲染图像。在我运行的测试中,这似乎不起作用 我还尝试创建一个不可见的CairoC

我已经在PyGTK中实现了一个定制的CellRenderer,它的渲染时间可能比理想的要长。可能有多个图像需要缩放,因此当用户单击组合框时,它甚至不会显示弹出窗口,直到渲染完成。如果我可以显示弹出窗口,然后渲染图像,那就好了。你可以在我的电脑上看

我已经实现了缓存,所以在它第一次加载之后,它将从内存或磁盘的单个映像加载,但是第一次加载每个单元可能需要2-4秒

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


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

正如您所提到的,我认为在屏幕外呈现它没有坏处,我这样做也是出于类似的原因。除非你做了一些非常奇怪的事情,否则这应该是可能的。

我认为,正如你所提到的,将其渲染到屏幕外并没有什么害处,我这样做也是出于类似的原因。这应该是可能的,除非你正在做一些非常奇怪的事情。

我使用了一个Pixmap,在加载屏幕后使用idle\u add进行渲染,因为只有在屏幕上的窗口内进行渲染时,它才会初始化窗口。您可以在中找到代码。看一下load_theme_thumbs()和_get_pixmap()

我使用了一个Pixmap,在加载屏幕后使用idle_add进行渲染,因为只有在屏幕上的窗口内进行渲染,它才会初始化窗口。您可以在中找到代码。看一下load_theme_thumbs()和_get_pixmap()

如果您添加一个示例代码或链接将有所帮助,我可以将其标记为已接受。我可以使用cairo.ImageSurface,但我必须从使用Pixbufs改为cairo自己的图像处理。如果您添加一个有帮助的示例代码或链接,我可以将其标记为已接受。我可以使用cairo.ImageSurface,但我必须从使用Pixbufs改为cairo自己的图像处理。