2010-08-29 50 views
2

我正在使用python編寫的GTK +應用程序。我明顯使用PyGtk。我的應用程序是關於視頻的集合。這是一種F-spot或Picasa,但是用於視頻。是否可以繪製像GtkIconView一樣列出的GtkTreeView?

正如您在這兩個應用程序中看到的,您有一箇中心區域,您可以在其中使用標籤縮略圖查看所有照片。

在我的應用程序中,我想實現相同的視角。現在我只是用這個:含

一個gtk.Table一個VBox,該VBox一個Pixbuf(我的視頻縮略圖)和HBox,並HBox內內,儘可能多的爲Pixbuf標籤。

它的工作,但它的醜陋,它似乎不是更好的解決方案。

深入研究文檔,我發現靠近我的neeeds有兩個小工具:IconViewTreeView。但IconView每個「行」只能顯示一個pixbuf,而TreeView不顯示爲像IconView這樣的網格。

我的問題:有沒有像顯示圖標型控件的一個TreeView(在網格中)的方法嗎? 您將如何實施F-Spot安排照片和標籤的方式?

+0

我還沒有涉足這個自己,但它看起來像它可能實現一個自定義的'CellRenderer'和'pack_end'到'IconView'中? – bobince 2010-08-29 23:54:44

回答

0

最好的辦法是要麼堅持使用一個表,並重新實現選擇或使用圖標型控件的定製版採用了自定義CellRenderer至極可以採取gtk.HBox()。

關於自定義CellRenderer一些指導原則是:

http://faq.pygtk.org/index.py?req=show&file=faq13.045.htp

http://faq.pygtk.org/index.py?req=show&file=faq13.056.htp

一個討論發生PyGTK的郵件列表:

HTP://old.nabble.com/Drawing-widgets -in-A-定製的CellRenderer-td14207692.html

WWWalter做出示例代碼: http://www.translate.org.za/blogs/walter/en/content/conquering-cellrendererwidget

根據Ruben Vermeersch的說法,f-pot使用IconView的修改版本。代碼可以在這裏找到: http://git.gnome.org/browse/f-spot/?h=icon-view-cleanup

1

IconView是你需要的。在ListStore中,每行只代表一個pixbuf,但IconView調整網格中的圖像。這裏有一個小例子,用你想顯示的圖像文件啓動它作爲參數,例如:

python example.py /usr/share/icons/hicolor/16x16/apps/* 

import sys 
import gtk 


store = gtk.ListStore(gtk.gdk.Pixbuf) 
iv = gtk.IconView(store) 
iv.set_pixbuf_column(0) 
for arg in sys.argv[1:]: 
    pixbuf = gtk.gdk.pixbuf_new_from_file(arg) 
    store.append((pixbuf,)) 

w = gtk.Window() 
w.connect('destroy', lambda w: gtk.main_quit()) 
sw = gtk.ScrolledWindow() 
w.add(sw) 
sw.add(iv) 
w.show_all() 
gtk.main() 
+0

也許我不解釋自己不夠清楚:我能恩使我的影片縮略圖的圖標型控件已經但是我不能在同一小區內我的視頻縮略圖和標籤的縮略圖相對渲染它。爲了更好的解釋,你可以看看f點ui。 這就是我尋找treemodel/treeview的原因,您可以在其中定義父母和孩子。 父母爲我的視頻縮略圖,孩子爲每個附加到它的標籤縮略圖。 不幸的是,treeview不能顯示爲像IconView的網格 – boblefrag 2010-08-31 16:29:21

+0

對不起,但我不能用什麼標記縮略圖。你能更好地解釋它嗎?它不是縮略圖的標籤嗎? – 2010-08-31 18:34:04

+0

確定,拿一個網格,在每個單元格中放一張照片,這是我的視頻縮略圖。在每個視頻縮略圖下方,將一些較小的照片放在一排中:這是我的縮略圖標記。 – boblefrag 2010-08-31 21:43:57