PythonとGtk4を使用したプログラミング[サンプルプログラムの説明]

PythonとGtk4を使用したプログラミング

 今回は、Gtk4プログラム(Python)の書き方を紹介するために、以下のサンプルプログラムの内容を説明をおこないます。また、Gtk.ApplicationやGtk.ApplicationWindowの作成方法やapplication_idを指定方法を紹介します。

import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk

def on_activate(app):
    win = Gtk.ApplicationWindow(application=app)
    btn = Gtk.Button(label="Hello, World!")
    btn.connect('clicked', lambda x: win.close())
    win.set_child(btn)
    win.present()

app = Gtk.Application(application_id='org.gtk.Example')
app.connect('activate', on_activate)
app.run(None)

引用元: https://www.gtk.org/docs/language-bindings/python/

今回紹介する内容
 ・ サンプルプログラムの流れについて
 ・ Gtk.Applicationを作成する
 ・ application_idを指定する
 ・ Gtk.ApplicationWindowを作成する

サンプルプログラムの内容

サンプルプログラムの流れについて

 サンプルプログラムを実行すると、最初に12行目にある引数にapplication_idを指定したGtk.Applicationの作成がおこなわれます。次に、13行目でシグナルactivateと関数on_activate()との紐づけをおこない、14行目で作成したAppを実行します。Appを実行すると、シグナルactivateが発行されてon_activate()関数が実行されます。

 関数on_activate()では、Gtk.ApplicationWindowを作成(6行目)しており、その中に押すとウィンドウを閉じるボタン(7〜9行目)を載せて、それらを表示(10行目)しています。

1〜3行目:   giライブラリの読み込みます
5〜10行目: 関数: on_activate()
  6行目: Gtk.ApplicationWindowを作成します ⇒ win
  7行目: "Hello,World!"というラベルの付いたGtk.Buttonの作成します ⇒ btn
8行目: btnに'clicked'イベントを設定して、クリックするとWindowを閉じるように
      指示します。 ※ ラムダ式を使用
  9行目: btnをwinに子としてセットします。
 10行目: winを表示します。

12行目: Gtk.Applicationを作成します
13行目:  'activate'シグナルと関数on_activateとを紐付けます。
14行目:  Appを実行します。

Gtk.Applicationを作成する

 サンプルプログラムでは、引数application_id=’org.gtk.Example’を指定したGtk.Applicationを作成しています。

app = Gtk.Application(application_id='org.gtk.Example')

 Gtk.Applicationは、①Gtkの初期化、②アプリケーションの一意性の確保、③セッション管理の処理、④アクションとメニューをエクスポートすることで基本的なスクリプト機能とデスクトップ シェルの統合を提供するクラスであり、Gtk4プログラムでは最初に作成するものです。

引用元:https://lazka.github.io/pgi-docs/#Gtk-4.0/classes/Application.html#Gtk.Application

application_idを指定する

 application_idは、アプリケーションの一意性を確保するためのものであり、アプリケーションごとに違ったものである必要が有ります。application_idには記入ルールがあり、それを守った上でGnomeでは以下のような付け方を提案しています。

application_idの付け方ルール

  • アプリケーション ID は、ピリオド (‘.’) 文字で区切られた 2 つ以上の要素で構成されている必要があります
  • 各要素には、1 つ以上の英数字 (A ~ Z、a ~ z、0 ~ 9) とアンダースコア (‘_’) を含める必要があり、数字で開始することはできません。
  • 空の文字列は有効な要素ではありません (つまり、アプリケーション ID はピリオドで始まったり終わったりしていない可能性があり、2 つのピリオドを続けて使用することはできません)。
  • ID 全体の長さは 255 文字未満にする必要があります

※ ハイフン (‘-‘)の使用も許可されていますが、 D-Bus など、ID を使用する可能性のあるすべてのコンポーネントでサポートされているわけではないため、アプリケーション ID ではハイフンを使用しないでください。

application_idの付け方のヒント(Gnome推奨)

 Gnomeでは、application_idの付け方について、以下のようにドメイン名やメールアドレスとプログラムの名前を組み合わせることを推奨しています。これは、application_idの重複防止に、非常に良い手段だと思います。

 例: “org.yorba.myapp”、“com.gmail.myemailaddr.myapp”
    青色:ドメイン名、メールアドレス
    赤色:プログラムの名前
Application ID
GNOME technologies make extensive use of “reverse DNS” style identifiers for applications. One of the first things that ...

Gtk.ApplicationWindowを作成する

 GtkApplicationWindow は、GtkApplication と統合する GtkWindow のサブクラスです。GtkWindowは、他のウィジェットを含むことができるトップレベルのウィンドウであり、サンプルプログラムのようにGtk.ButtonなどのWidgetを載せるのに使用します。GtkApplicationWindowは、その機能に加えてアプリケーションメニューバーの処理がおこなえます。

PyGObject API Reference

 サンプルプログラムではボタンをウィンドウに載せているだけであり、アプリケーションメニューバーの処理は使用していないので、GtkApplicationWindowの代わりにGtkWindowを使用することも可能でした。

タイトルとURLをコピーしました