我遇到了这个相当出乎意料的问题。我有一个带有单个文本列的 gtk.TreeView,由 gtk.CellRendererText 呈现。我想要的是用户可以使用鼠标标记显示的文本并通过按 ctrl+c 将其放入剪贴板。(我指的是每个网络浏览器和文本编辑器中存在的非常基本的功能)。但是,gtk 不会让我这样做。我在这里有一个简单的例子,带有不可标记/不可突出显示的文本:
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()
我当然可以使单元格可编辑,因为可编辑模式提供了该功能。但这远非优雅,因为它是某种弹出窗口,它打破了换行并编辑了文本。我需要的是一个单元格,它不可选择、不可编辑或任何东西,但有可以复制的文本。
有没有人有办法解决吗?谢谢!