我目前的項目使用Gtk.TreeView
每行四個字段,兩個字符串,一個int
和boolean
顯示ListView
的內容。我試圖在TreeView中實現對行的拖放重排。我不想簡單地將TreeView.set_reorderable(True)
用於內置拖放操作,因爲我想控制從模型中插入和刪除數據,以及能夠實現拖放操作的撤銷/重做。我正在使用Python 3.2和PyGObject 3.如何設置多個項目成樹狀視圖拖動GtkSelection拖放
現在我正在解決的問題是如何在我的drag_data_get
方法設置選擇數據對象與兩個字符串,一個int和一個bool
構成行被拖放。所有的示例代碼我已經能夠找到涉及樹視圖與字符串值一列是得到這樣的設置到選擇的東西:
def drag_data_get_data(self, treeview, context, selection, target_id, etime):
treeselection = treeview.get_selection()
model, iter = treeselection.get_selected()
data = bytes(model.get_value(iter, 0), "utf-8")
selection.set(selection.get_target(), 8, data)
我所有的努力,來設置選擇對象從數據我的一個TreeView行失敗了。我的模型中的int
和bool
值不能像字符串值那樣進行編碼,並且我找不到任何有關如何將多列TreeView行的所有值設置爲單個選擇對象的示例。任何人都可以向我指出一些相關的例子或文檔嗎?
謝謝! Json做了我所需要的。拖放功能完全按照預期工作。感謝關於完整性檢查的警告 - 我將限制拖放到拖放源和拖動目標的相關TargetEntry中的相同小部件。這應該可以防止幾乎所有的惡意案件,不是嗎? – knutsondc
是的,我認爲這應該足夠安全。您應該將我的答案標記爲已接受,這就是堆棧溢出的方式。 :-) –