Python GTK+3 チュートリアル

02. 始めに

文字起こしソフトをあれこれ調べていくうちに、自分が使いやすいツールを自作してみたくなったのでPythonで作ります。まずはGUIの基礎から。

The Python GTK+ 3 Tutorialにあるサンプルのコメントを翻訳して、実際にスクリプトを走らせて少しずつ覚えようと思います。 必要なライブラリやモジュールのインストールは、1. Installationで済ませてあります。


2.1. 簡単なサンプル

まずは小さなウィンドウを出すところから。

# tut02-01.py
# 01.簡単なサンプル

# 最初、GTK+のクラスや関数にアクセスできるようにするために、Gtkモジュールをインポートする必要があります。ユーザのシステムには複数のバージョンの GTK+ が同時にインストールされている可能性があるので、Gtk をインポートする際には GTK+ 3 を参照し、他のバージョンのライブラリを参照しないようにしておきます。
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

#  空のウィンドウを作成します。
win = Gtk.Window()
# GTK+では、イベントとはXサーバーからのメッセージのことです。イベントがウィジェットに到達すると、ウィジェットはシグナルを発してこのイベントに反応します。このシグナルには特定のコールバック(シグナルに反応するハンドラ関数)を接続することができます。
# ウィンドウを閉じるために x をクリックした場合にアプリケーションが終了するように、"destroy"シグナルとGtk.main_quit関数を接続します。
win.connect("destroy", Gtk.main_quit)
# ウィンドウを表示します。
win.show_all()
# GTK+処理ループを開始します。このループはウィンドウが閉じられたときに終了します。
Gtk.main()

このスクリプトを実行すると空のウィンドウが開きます。右角の☒を押すとプログラムが終了します。

01.始めに

2.2. クラスを使ったサンプル

Gtk.WindowクラスからサブクラスMyWindowを定義します。

# tut02-02.py
# 02. クラスを使ったサンプル
# もう少し便利なものとしては、古典的なプログラム「Hello World」のPyGObject版があります。

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

# この例は前のとは異なり、Gtk.Window をサブクラス化して独自の MyWindow クラスを定義しています。クラスのコンストラクタでは、スーパークラスのコンストラクタを呼び出す必要があります。
class MyWindow(Gtk.Window):
    def __init__(self):
        #プロパティタイトルの値をHello Worldに設定するように指示しています。
        Gtk.Window.__init__(self, title="Hello World")

        # 次の3行は、ボタンウィジェットを作成し、"clicked"シグナルと"on_button_clicked"メソッドを接続し、トップレベルのウィンドウに子として追加しています。
        self.button = Gtk.Button(label="Click Here")
        self.button.connect("clicked", self.on_button_clicked)
        self.add(self.button)

    # ボタンをクリックすると on_button_clicked() メソッドが呼び出されます。
    # このメソッドはコンソールに"Hello World"という文字列を表示する働きを持ちます。
    def on_button_clicked(self, widget):
        print("Hello World")

# 最後のブロックはクラスの外側にあり、上記の01. 簡単なサンプルと非常に似ていますが、汎用的な Gtk.Window クラスのインスタンスを作成する代わりに MyWindow のインスタンスを作成します。
win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

このスクリプトを実行するとボタンを持つウィンドウが開きます。クリックするとコンソールに"Hello World"と出力されます。

02. クラスを使ったサンプル


関連記事