拷贝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