ウィンドウにGtkストックアイコンを追加しようとしています。コードは次のとおりです。
#! /usr/bin/python
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='My Window Title')
self.icon = self.render_icon(Gtk.STOCK_FLOPPY, 1)
self.set_icon(self.icon)
self.connect('delete-event', Gtk.main_quit)
win = MyWindow()
win.show_all()
Gtk.main()
このページ アイコンサイズは Gtkアイコンサイズ定数 のいずれかである必要がありますが、Eclipseコード補完ではリストされた値が表示されず、手動で入力すると取得する
AttributeError: 'gi.repository.Gtk'オブジェクトには属性 'ICON_SIZE_SMALL_TOOLBAR'がありません
アイコンサイズをリテラル1に設定すると、スクリプトは機能します。私はこれがGtkまたはPyGtkバージョンで何かをしなければならないと確信していますが、私が間違っていることを理解することはできません。事前に感謝し、初心者の質問を申し訳ありません。
問題は、PyGTKのドキュメントを見ているが、スクリプトでPyGI/GTK3を使用していることです。
gtk_widget_render_icon()
のドキュメントには次のように書かれています。
gtk_widget_render_iconはバージョン3.0以降廃止されており、新しく作成されたコードでは使用しないでください。代わりにgtk_widget_render_icon_pixbuf()を使用してください。
それから gtk_widget_render_icon_pixbuf()
のドキュメントはこれを言います:
gtk_widget_render_icon_pixbufはバージョン3.10から非推奨になり、新しく作成されたコードでは使用すべきではありません。代わりにgtk_icon_theme_load_icon()を使用してください。
すごいね!それでは先に進みましょう。
gtk_icon_theme_load_icon()
は次の引数を取ります。
これを知っていれば、古いrender_icon
次の行:
icontheme = Gtk.IconTheme.get_default()
self.icon = icontheme.load_icon(Gtk.STOCK_FLOPPY, 128, 0)
128x128 pxの画像を検索します。必要に応じてフラグを変更したい場合があります。列挙型は here で文書化されています。これはPythonのように翻訳できます:
GTK_ICON_LOOKUP_NO_SVG -> Gtk.IconLookupFlags.NO_SVG
GTK_ICON_LOOKUP_FORCE_SVG -> Gtk.IconLookupFlags.FORCE_SVG
GTK_ICON_LOOKUP_USE_BUILTIN -> Gtk.IconLookupFlags.USE_BUILTIN
# And so on...