gtk.TreeView
選択内容が変更された場合はいつでも検出し、変更された場合は、この情報を使用して関数を呼び出したいと思います。これまでに私が見つけた唯一の方法は、これらすべての信号に接続することです。
...
self.sitterView.connect("cursor-changed", self.selectionChanged)
self.sitterView.connect("unselect-all", self.selectionChanged)
self.sitterView.connect("toggle-cursor-row", self.selectionChanged)
self.sitterView.connect("select-all", self.selectionChanged)
...
def selectionChanged(self, treeview):
foo(self.sitterView.get_selection().get_selected())
ただし、コールバックから取得した選択は「遅延」しているようです。つまり、前のコールバックが完了した後の選択が表示されます。たとえば、行をCtrlキーを押しながらクリックし続けると、行が選択解除から選択された状態になると、fooには選択が与えられず、行が選択された状態から選択解除された状態になると、選択が与えられます。get_selection().get_selected()
ただし、1秒後に電話をかけると、正しい選択ができます。これでどう対処するか考えてみませんか?