2

いくつかのアイコンを含む ComboBox を TreeView に表示したいと思います。そこで、データを保持する ListStore を作成しました。

    # Initialize a list store for the combobox.
    priorityModel = Gtk.ListStore(GObject.TYPE_INT, GdkPixbuf.Pixbuf)
    priorityModel.append([0, self.loadPixbuf('./data/media/flag_blue.png')])
    priorityModel.append([1, self.loadPixbuf('./data/media/flag_green.png')])
    priorityModel.append([2, self.loadPixbuf('./data/media/flag_yellow.png')])
    priorityModel.append([3, self.loadPixbuf('./data/media/flag_red.png')])

次に、Gtk.CellRendererCombo オブジェクトを作成し、上記の Gtk.ListStore をモデルとして割り当てました。

    # Setup the priority cell renderer, ...
    self.priorityRenderer = Gtk.CellRendererCombo()
    self.priorityRenderer.set_property( 'editable', True )
    self.priorityRenderer.set_property("model", priorityModel)
    self.priorityRenderer.connect("edited", self.on_priority_changed, self.listStore, 3)

最後に、新しい Gtk.TreeViewColumn を作成し、CellRenderer を割り当てて TreeView に追加しました。

    # ... setup the priority column ...
    self.colPriority = Gtk.TreeViewColumn("Priority", self.priorityRenderer, text=3 )

    # ... and add it to the treeview.
    self.append_column( self.colPriority )

すべていいのですが、整数の代わりに Pixbuf アイコンを表示するにはどうすればよいですか? また、整数を使用して ComboBox を初期化するにはどうすればよいですか? そして、2 番目の質問は、コンボボックスがアクティブでないときにアイコンのみを表示し、値が変更されたとき (ComboBox がアクティブ) にアイコンとテキストを表示することは可能ですか?

4

1 に答える 1

1

Gtk.CellRendererPixbufアイコンを表示するにはが必要です。たとえば、優れたPython 3 Gtk+ Tutorialを参照してください。

2 番目の質問への回答: はい。"changed"の信号に接続しGtk.CellRendererCombo、セル レンダラーを動的に追加/削除するだけです。

于 2012-07-22T19:57:23.670 に答える