Gtk.AboutDialogの使用
Gtk.AboutDialogはプログラムに関する情報を表示するWidgetあり、主にプログラムのヘルプメニューをで使用されます。表示できる情報は、プログラムのロゴ、名前、著作権、Web サイト、ライセンス、 プログラムに携わった著者、ドキュメンタリー作成者、翻訳者、アーティストのクレジットであり、これらの情報も、表示するには指定する必要があります。
今回は、Gtk.AboutDialogの作成方法と、それを表示する方法について紹介します。
今回紹介する内容
・ Gtk.AboutDialogを作成する
・ Gtk.AboutDialogを表示する
Gtk.AboutDialogの作成
Gtk.AboutDialogを作成する
Gtk.AboutDialogは、以下のようにGtk.AboutDialog()の中にプロパティを指定して作成します。
dialog = Gtk.AboutDialog(
modal=True,
authors=['taniyoshima'],
comments='AboutDialogのサンプル',
license_type=Gtk.License.MIT_X11,
version='1.0.0',
program_name='Gtk.AboutDialog Test',
logo=icon
)
Gtk.AboutDialogにプロパティを追加する
Gtk.AboutDialogには、以下をプロパティに指定することで設定可能であり、それらは表の型に示す形でデータを入力します。
名前 | 型 | 内容 |
---|---|---|
artists | [str] | アーティスト |
authors | [str] | 著者 |
comments | str | コメント |
copyright | str | 著作権 |
documenters | [str] | 書類作成者 |
license | str | ライセンス |
license-type | Gtk.License | ライセンスタイプ |
logo | Gdk.Paintable | ロゴ |
logo_icon_name | str | ロゴアイコンの名前 |
program_name | str | プログラム名 |
system_imformation | str | システム情報 |
translator_credits | str | 翻訳者の功績 |
version | str | バージョン |
website | str | Webサイト |
website_label | str | Webサイトへのリンクのラベル |
wrap_license | bool | ライセンスダイアログでテキストを 折り返すかどうか。 |
Gtk.AboutDialogのLogoに画像ファイルを指定する
Logoに画像ファイルを表示するには、Gtk.Picture.new_for_filename()で画像ファイルを指定したGtk.Pictureを定義して、そのGtk.Pictureからメソッドget_paintable()によりGtk.Paintableを取得します(赤字部分)。
作成したicon(Gtk.Paintable)は、Gtk.AboutDialogの定義時にプロパティlogoで指定することで、Logo画像として表示されます。
# アイコンの読み込み
icon = Gtk.Picture.new_for_filename('icon.png').get_paintable()
# Gtk.AboutDialogの指定
dialog = Gtk.AboutDialog(
modal=True,
authors=['taniyoshima'],
comments='AboutDialogのサンプル',
license_type=Gtk.License.MIT_X11,
version='1.0.0',
program_name='Gtk.AboutDialog Test',
logo=icon
)
Gtk.AboutDialogを表示する
作成したGtk.AboutDialogは、以下のようにpresent()を使用することで表示します。
dialog.present()
Gtk.AboutDialogのサンプルプログラム
下のサンプルプログラムは、Gtk.PopoverMenuBarのサンプルプログラム2と同じものです。’ヘルプ’‐’バージョン情報’を選択すると、Gtk.AboutDialogが表示されます。
Gtk.AboutDialogに使用するアイコン画像(下のSmple Iconと表示した画像)
サンプルプログラムと同じフォルダに保存してから実行してください
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gio
APPID = 'com.github.taniyoshima.g4_fblog_menubar2'
MENUBAR_XML = """
<!--?xml version="1.0" encoding="UTF-8"?-->
<interface>
<menu id="menu">
<submenu>
<attribute name="label">ファイル</attribute>
<item>
<attribute name="label">ラベル変更</attribute>
<attribute name="action">win.label_tc</attribute>
</item>
<item>
<attribute name="label">終了</attribute>
<attribute name="action">app.quit</attribute>
</item>
</submenu>
<submenu>
<attribute name="label">ヘルプ</attribute>
<item>
<attribute name="label">バージョン情報</attribute>
<attribute name="action">app.about</attribute>
</item>
</submenu>
</menu>
</interface>
"""
class Gtk4TestTest(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.Window.__init__(
self, application=app, title='Gtk.PopoverMenuBar2 Test',
height_request=150, width_request=350
)
# 'ラベル変更'用のアクション
action = Gio.SimpleAction.new("label_tc", None)
action.connect("activate", self.on_label_change)
self.add_action(action)
builder = Gtk.Builder.new_from_string(MENUBAR_XML, -1)
menu = builder.get_object("menu")
menubar = Gtk.PopoverMenuBar.new_from_model(menu)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
vbox.append(menubar)
self.label = Gtk.Label(label='hello')
vbox.append(self.label)
self.set_child(vbox)
# アクションlabel_tcの処理
def on_label_change(self, action, param):
self.label.set_text('Good-Bye')
class Gtk4TestApp(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self, application_id=APPID)
def do_startup(self):
Gtk.Application.do_startup(self)
# '終了'用のアクション
action = Gio.SimpleAction.new('quit', None)
action.connect('activate', self.on_quit)
self.add_action(action)
# 'バージョン情報'用のアクション
action = Gio.SimpleAction.new("about", None)
action.connect("activate", self.on_about)
self.add_action(action)
def do_activate(self):
window = Gtk4TestTest(self)
window.present()
# アクションquitの処理
def on_quit(self, action, param):
self.quit()
# アクションaboutの処理
def on_about(self, action, param):
icon = Gtk.Picture.new_for_filename('icon.png').get_paintable()
dialog = Gtk.AboutDialog(
modal=True,
authors=['taniyoshima'],
comments='AboutDialogのサンプル',
license_type=Gtk.License.MIT_X11,
version='1.0.0',
program_name='Gtk.AboutDialog Test',
logo=icon
)
dialog.present()
def main():
app = Gtk4TestApp()
app.run()
if __name__ == '__main__':
main()
まとめ
- Gtk.AboutDialogの内容は、プロパティやメソッドにより指定します。
- Logoに使用する画像ファイルは、Gtk.Picture.new_for_filenameで読み込み、そのGtk.Pictureにメソッドget_paintableを使用することでGtk.Paintableにします。
次回の予定
次回は、Gtk.Dialogの使い方を見ていきます。