pygtkで遊ぼう(11) gtk.Toolbar編(2)
前回のToolBar編(1)で、「うまく動いてそうだけど、なにやらワーニングが表示される」とかきました。
原因と対策がわかりました。
原因
pygtkのリファレンスにちゃんと書いてありました。
(いつもながら。。リファレンスちゃんと読んでませんでした)
pygtkの2.4以上では、gtk.Toolbar.append_item()がサポート対象外(削除予定)となっているようです。append_itemメソッドだけでなく、gtk.Toolbarにアイテムを追加したり削除したりするメソッドはどれもサポート対象外となっていました。
ということで、別の方法でツールバー上にボタンなどを配置しなくてはいけません。
対策
解決方法としては、gtk.ToolButtonを作って、それをツールバーに追加します。
前回作成したget_tool_barを書き換えると、次のようになります。
def get_tool_bar(self): # ツールバーの作成 tb = gtk.Toolbar() # ツールバーの方向を水平方向に指定。 tb.set_orientation(gtk.ORIENTATION_HORIZONTAL) # ツールバーの表示方法を設定。 # gtk.TOOLBAR_ICONS : アイコンのみを表示 # gtk.TOOLBAR_TEXT : テキストのみを表示 # gtk.TOOLBAR_BOTH : アイコンとテキストの両方を表示。(アイコンの下にテキスト) # gtk.TOOLBAR_BOTH_HORIZ : アイコンとテキストを横に並べて表示。 tb.set_style(gtk.TOOLBAR_BOTH) for i in range(10): # ボタン用アイコンを作成。 iconw = gtk.image_new_from_stock(gtk.STOCK_QUIT, gtk.ICON_SIZE_BUTTON) # ツールバーにボタンを追加。 closeBt = gtk.ToolButton(iconw, 'Close') closeBt.connect('clicked', self.on_exit) # ツールチップを設定 tips = gtk.Tooltips() tips.set_tip(closeBt, 'Close this app') tb.add(closeBt) return tb
上のコードの赤文字の部分が、pygtk2.4以上でのやりかたです。
上の例では、10個のCloseボタンを作成して、ツールバーに追加してみました。
私的には、以前のappend_item()よりも、新しいやりかたのほうが好みです。
あ、そうそう、append_item()で作成したボタンとgtk.ToolButton()を混在させることは
できません。混在させた場合には、エラーが表示され、ボタンの追加が失敗しますので
気を付けてください。
いやはや。今日もいい勉強になりました。