拷貝Pasteable文字我遇到了這個頗爲意外的問題。我有一個gtk.TreeView和一個單獨的文本列,由gtk.CellRendererText渲染。我想要的是,用戶可以使用鼠標標記顯示的文本並按下ctrl + c將其放入剪貼板。 (我指的是每個瀏覽器和文本編輯器中都有的基本功能)。但是,gtk不會讓我這樣做。我有一個簡單的例子,在這裏,非打標/非高亮文本:在PyGTK中的TreeView控件
import gtk
class TreeViewExample(gtk.TreeView):
def __init__(self):
gtk.TreeView.__init__(self)
self.get_selection().set_mode(gtk.SELECTION_NONE)
self.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_HORIZONTAL)
# create model
self.list_store = gtk.ListStore(str)
self.list_store.append(['Hello, this is some \n multiline text.'])
self.list_store.append(['Another text.'])
self.set_model(self.list_store)
# create text column
col = gtk.TreeViewColumn('Text Column')
self.append_column(col)
cell = gtk.CellRendererText()
col.pack_start(cell, True)
col.add_attribute(cell, 'text', 0)
class MasterWindow(object):
def destroy(self, widget, data=None):
gtk.main_quit()
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(500,500)
self.window.connect("destroy", self.destroy)
self.window.add(TreeViewExample())
self.window.show_all()
if __name__ == '__main__':
mw = MasterWindow()
gtk.main()
我當然可以使細胞可編輯,因爲編輯模式提供的功能。但是這遠非優雅,因爲它是某種彈出式的,打破了線條包裹,並且編輯了文本。我需要的是一個單元格,它不是可選擇的,可編輯的或任何其他的,但有文本,可以複製。
有沒有人有解決方案?謝謝!
基本上,您的解決方案是使單元格可編輯,但不提供回調以阻止保存更改。 – Flimm 2013-04-17 14:27:40
你是正確的,但@Pappenheimer只想讓他的單元格可編輯,複製和粘貼。如果你想在一些單元格中保存更改,請更新你的列表。 – MyMy 2013-04-17 15:17:36
它仍然不理想,因爲用戶可以看似改變單元格的內容,只有在失去焦點時纔會改變它們。 – Flimm 2013-04-17 15:26:12