2

私の PyGTK アプリケーションでは、現在「編集可能」を使用してセルを編集可能にしています。しかし、セルの内容が非常に大きい場合があるため、ユーザーがセルをダブルクリックしたときに新しいウィンドウで変更を求めたいと考えています。しかし、特定のセルレンダラーでダブルクリックをフックする方法を見つけることができませんでした-行全体を編集したくありません。また、このコールバックを行全体に設定したくありません。コンテンツが長すぎる列に対してのみ発生する可能性があります。CellRendererText() などでこれを行うにはどうすればよいですか。

私の現在のセル生成コードは次のとおりです。

cols[i] = gtk.TreeViewColumn(coltitle)
cells[i] = gtk.CellRendererText()
cols[i].pack_start(cells[i])
cols[i].add_attribute(cells[i], 'text', i)
cols[i].set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
cols[i].set_fixed_width(100)
cells[i].set_property('editable', True)
cells[i].connect('edited', self.edited, (i, ls))
cols[i].set_resizable(True)
mytreeview.append_column(cols[i])

ありがとう!

4

1 に答える 1

3

これは直接的には不可能だと思います。ただし、 に接続することはできbutton-press-eventますgtk.TreeView。次に、 が にevent.type等しい場合、を使用してツリーの場所gtk.gdk._2BUTTON_PRESSに変換xします。これにより、行を示すツリー パスと、クリックが行われたオブジェクトの両方が返されます。ygtk.TreeView.get_path_at_pos()gtk.TreeViewColumn

于 2010-05-12T19:10:25.683 に答える