ツリービューの各行に、4つの画像ボタンを並べて表示します。それらはラジオボタンのように機能し、一度に1つだけアクティブにできます。各ボタンには「オン」と「オフ」の画像があります。
どうすればよいですか?そこに画像を配置する方法とトグルボタンを配置する方法を理解しましたが、私が望むことを実行するビルド済みのセルレンダラーがないため、これにはもう少し手間がかかるようです。
基本的に私の問題を解決するのは、gtk.treeview
クリック可能な画像を作成する方法を見つけることです。何か案は?
ツリービューの各行に、4つの画像ボタンを並べて表示します。それらはラジオボタンのように機能し、一度に1つだけアクティブにできます。各ボタンには「オン」と「オフ」の画像があります。
どうすればよいですか?そこに画像を配置する方法とトグルボタンを配置する方法を理解しましたが、私が望むことを実行するビルド済みのセルレンダラーがないため、これにはもう少し手間がかかるようです。
基本的に私の問題を解決するのは、gtk.treeview
クリック可能な画像を作成する方法を見つけることです。何か案は?
これを見てください' http://www.daa.com.au/pipermail/pygtk/2010-March/018355.html '。gtk.CellRendererPixbufをアクティブ化して、クリックイベントシグナルに接続できるようにする方法を示します。
cell = CellRendererPixbufXt()
cell.connect('clicked', func)
アップデート
この答えを指摘したように、または与えられた参照は宣伝どおりに機能しません。クリックされた信号を発する必要があるdo_activateメソッドがありません。それが完了すると、cell.connectが機能します。
この答えが誰かを誤解させるなら申し訳ありません。
kiwi
これは要件のない短いバージョンです。
class CellRendererClickablePixbuf(gtk.CellRendererPixbuf):
__gsignals__ = {'clicked': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
(gobject.TYPE_STRING,))
}
def __init__(self):
gtk.CellRendererPixbuf.__init__(self)
self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)
def do_activate(self, event, widget, path, background_area, cell_area,
flags):
self.emit('clicked', path)
これが私のために働いたものです:
class CellRendererClickablePixbuf(gtk.CellRendererPixbuf):
gsignal('clicked', str)
def __init__(self):
gtk.CellRendererPixbuf.__init__(self)
self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)
def do_activate(self, event, widget, path, background_area, cell_area, flags):
self.emit('clicked', path)