2010-12-22 54 views
0

我已經在PyGTK中實現了一個自定義的CellRenderer,它可能需要更長時間才能渲染。可以有多個圖像需要縮放,所以當用戶點擊ComboBox時,它將不會顯示彈出窗口,直到渲染完成。如果我可以顯示彈出框,然後渲染圖像,那很好。你可以在我的Google Code Repository上看看它。如何在PyGTK組合框中處理慢速渲染

我已經實現了緩存,所以在第一次加載之後,它將從內存或磁盤的單個映像加載,但第一次加載時每個單元可能需要2-4秒。

我曾經想過實現的東西包括在應用程序加載時彈出組合框,以便強制它渲染圖像。這似乎沒有在我運行的測試中工作。

我也嘗試創建一個CairoContext和不可見的表面,但我要求它是一個gtk.gdk.CairoContext,如果沒有實際的小部件,我不認爲它可以啓動。我有可能在屏幕外的部件中渲染它,但我不確定這是一個好主意,甚至是可能的。

回答

1

我使用了一個Pixmap,一旦屏幕加載完成,它使用idle_add呈現,因爲它不會初始化窗口,直到它被呈現在屏幕上的一個窗口內。你可以在themeselect.py找到代碼。看看load_theme_thumbs()和_get_pixmap()。

0

正如你所提到的,我認爲它在脫離屏幕方面沒有任何壞處,並且我也是出於類似原因這麼做的。這應該是可能的,除非你做的事情很奇怪。

+0

如果您添加示例代碼或鏈接將有所幫助,我可以將其標記爲已接受。我可以使用cairo.ImageSurface,但我必須從使用Pixbufs更改爲cairo自己的圖像處理。 – bradlis7 2010-12-23 21:57:49