這是我正在使用的treeview
,以顯示來自多個來源的文本(使用打開文件對話框的文件)。它也應該有編輯行的能力。 (如有的bookstore /= entries
的大小,我已經清除他們使它更短不介意)將索引添加到樹視圖的每一行
class treeview():
full_list = []
booklist = []
indxcount = 0
bookstore = Gtk.ListStore(int, str, str, str, str, str, str, str,
str, str, str, str)
viewstore = Gtk.ListStore(str, str)
entries = ["Type", "Id", "Title", "Author", "Journal", "Year", "Publisher",
"Page", "Address", "Annote", "Booktitle", "Chapter"]
def __init__(self):
self.cell = cell.cell_renderer()
self.view = Gtk.TreeView(model=self.bookstore)
for i, column_title in enumerate(["Type", "Key", "Title",
"Author", "Journal", "Year"]):
renderer = Gtk.CellRendererText()
renderer.set_property("wrap-width", 300)
if i > 3:
renderer.set_property("wrap-width", 100)
renderer.set_property("wrap-mode", 0)
column = Gtk.TreeViewColumn(column_title, renderer, text=i+1)
self.view.append_column(column)
# column.clear()
for cid in range(0, 6):
column.set_sort_column_id(cid)
def viewer(self, booklist, act=-1):
for ref in booklist:
lref = list(ref)
treeview.indxcount += 1
lref = list(ref)
lref.insert(0, (treeview.indxcount))
self.bookstore.append(lref)
treeview().full_list.append(ref)
self.current_filter_language = None
的問題是,因爲我把行索引人爲,其給予更多的問題,那麼解決方案(例如,如果我重新打開另一個文件treeview.indxcount = last indxcount of previously open files + 1
)。
但是由於它是從文件打開,我不能從gtk_tree_selection_get_selected_rows
得到indx。那麼,我如何獲得索引?
另一個潛在的功能可能是GtkTreeCellDataFunc()
,但我不知道如何使用,所以我沒有管理它。
請幫忙。
到jcoppens的答覆:嗨, 把一個完整的例子是應該打開一個文件有點棘手(將包括一個文件打開對話和一個完整的窗口),這可能會有更多的小例子。
但是,在排序上,我的問題是treeview.indxcount += 1
行。請允許我更詳細地解釋問題:
說,我從包含6個項目的文件(so,len(booklist)=6
)讀取數據。因此,完成此步驟後,treeview.indxcount = 6
。
現在,請考慮,我正在加載另一個這樣的文件,它將覆蓋現有的數據。但是,在這種情況下,treeview.indxcount
將從7開始。我試圖將treeview.indxcount = 0
放入FileOpenDialog
,但不知何故,這不會影響觀看者。
所以,簡單地說,我試圖在數據被加載時計算treeview中的行數。
我不知道這個解釋是否清除了事情,或不。
我並不完全相信我會遇到問題。一個簡單的操作例子會很有用。你有沒有考慮只使用Python屬性? – jcoppens