1

このかなり予期しない問題に遭遇しました。gtk.CellRendererText によってレンダリングされる単一のテキスト列を持つ gtk.TreeView があります。私が望むのは、ユーザーがマウスを使用して表示されたテキストをマークし、ctrl + c を押してクリップボードに入れることができることです。(すべての Web ブラウザーとテキストエディターに存在する非常に基本的な機能について言及しています)。しかし、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()

もちろん、編集可能モードで機能が提供されるため、セルを編集可能にすることもできます。しかし、これは洗練されたものとは言えません。行の折り返しを壊して、テキストを編集するポップアップのようなものだからです。私が必要としているのは、選択可能、編集可能などではありませんが、コピー可能なテキストを持つセルです。

誰にも解決策がありますか?ありがとう!

4

2 に答える 2