GladeとGTK+を使ってPythonで最初のGUIを作成する

概要

  • Python開発者は、GTK+とGladeを使って、視覚的なインターフェースで直感的に操作できるGUIを作成できます。
  • この例の環境を設定するには、Python、GTK+、Glade、PyGObjectをインストールする必要があります。
  • Python GUI開発にGTK+とGladeを使うことで、開発プロセスが高速化され、GUIのデザインとコードが分離されます。

Pythonは、データ分析やWeb開発に最適な、アクセスしやすい言語です。しかし、GUIアプリの開発にも最適な選択肢です。GTK+とGladeは、シンプルなクロスプラットフォームアプリを作成するプロセスを簡素化します。

Python開発者向けのGTK+とGlade Interface Designer

GTK+(GIMP Toolkit)とGlade Interface Designerは、直感的で操作しやすいグラフィカルユーザーインターフェースを作成したいPython開発者にとって、素晴らしい組み合わせです。

GTK+は、GUI開発に使用できるマルチプラットフォームツールキットです。Linux、Windows、macOSなど、さまざまなオペレーティングシステムと互換性があります。

GTK+のコンパニオンツールであるGlade Interface Designerを使用すると、レイアウトコードを書くことなくGUIをデザインできます。WYSIWYG環境で、数回のクリックと簡単なドラッグアンドドロップ操作でGUIを作成できます。

GTK+とGladeの開発のためのPython環境の設定

環境を設定することは、スムーズかつ効率的なワークフローを確保するための重要な第一歩です。

1. Pythonをインストールする

まず、システムにPythonがインストールされていることを確認してください。GTK+とGladeのサポートと統合が向上しているため、例ではPython 3のコードが表示されます。LinuxとmacOSでは、通常Pythonはプリインストールされています。

Windowsユーザーは、Pythonの公式WebサイトからPythonをダウンロードできます。

2. GTK+をインストールする

パッケージマネージャーを使用してGTK+をインストールできます。

UbuntuとDebianベースのLinuxシステムの場合、次のコマンドを使用します。

sudo apt-get install libgtk-3-dev

Fedoraなど:

sudo dnf install gtk3-devel

macOSの場合、Homebrewを使用します。

brew install gtk+3

Windowsユーザーは、GTKの公式ダウンロードページからGTK+をダウンロードできます。ただし、MSYS2がインストールされている場合は、MSYS2のコマンドラインを開いて次のコマンドを使用できます。

pacman -S mingw-w64-x86_64-python-gobject

3. Gladeをインストールする

コマンドラインを使用してGladeをインストールできます。

UbuntuとDebianベースのLinuxディストリビューションの場合:

sudo apt-get install glade

Fedoraの場合:

sudo dnf install glade

macOSユーザーは、Homebrewを使用できます。

brew install glade

Windowsユーザーは、MSYS2で次のコマンドを使用できます。

pacman -S mingw-w64-x86_64-glade

4. GTK+のPythonバインディング

GTK+とPythonを統合するには、PyGObjectをインストールします。このために使用するコマンドは次のとおりです。

pip install PyGObject

PyGObjectのインストール中に「Building wheel for pycairo (pyproject.toml) did not run」などのエラーが発生した場合は、cairoパッケージもインストールする必要があります。

UbuntuとDebianベースのLinuxディストリビューションの場合:

sudo apt-get install libcairo2-dev

Fedoraの場合:

sudo yum install cairo-devel

macOSの場合:

brew install pygobject3

5. 仮想環境を設定する(オプション)

Pythonプロジェクトには、仮想環境を使用することをお勧めします。これにより、プロジェクトの依存関係が隔離されます。次のターミナルコマンドで、Linuxに仮想環境を作成してアクティブにします。

python -m venv myenv
source myenv/bin/activate

Windowsでは、次のコマンドを使用します。

python -m venv myenv
myenv\Scripts\activate

macOSでは、仮想環境がbrewでインストールされたパッケージにアクセスできるようにするには、次のコマンドを使用します。

python -m venv --system-site-packages myenv
source myenv/bin/activate

6. インストールの確認

GTK+とGladeがインストールされていることを確認するには、GTKをインポートするシンプルなPythonスクリプトを作成します。

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
print("GTK+ version:", Gtk.get_major_version(), Gtk.get_minor_version())

このスクリプトを実行すると、インストールされているGTK+のバージョンが出力されます。すべて問題がなければ、開発環境が設定されています。

Glade Interface DesignerとPythonでシンプルなGUIアプリを作成する

Glade Interface DesignerでGUIアプリをデザインし、プロジェクトファイルとしてレイアウトをエクスポートできます。その後、Pythonコードからそのプロジェクトファイルにアクセスできます。

GladeでGUIをデザインする

Gladeのドラッグアンドドロップインターフェースを使用すると、基礎となるコードに煩わされることなく、デザインに集中することができます。システムのアプリケーションメニューまたはコマンドラインから、次のコマンドでGladeを起動します。

glade

Gladeインターフェースが表示され、GUIレイアウトの作成を開始できます。

左上のCreate New Projectボタンをクリックすると、GUIデザイン用の空白のキャンバスが表示されます。Gladeのトップバーには、ボタン、テキスト入力、ラベルなど、さまざまなウィジェットが用意されています。これらのウィジェットをキャンバスにドラッグして、GUIのスタイルを整え始めます。ウィジェットは、デザインのニーズに合わせてサイズ変更や位置調整が可能です。

まず、ToplevelsメニューからGtkWindowウィジェットを選択します。

Gladeの右側のバーにあるGeneralページに、IDオプションが表示されます。このIDは、追加したウィジェットの一意の名前です。この例では、追加したGtkWindowにmyMainWindowというIDを割り当てます。

作成したメインウィンドウにウィジェットを追加できるようになりました。トップバーのContainersに移動し、GtkBoxウィジェットを選択してワークスペースにドラッグします。次に、myMainBoxというIDを付けます。

GtkBoxウィジェットを追加すると、ワークスペースの右側にそのウィジェットに固有のさまざまなオプションが表示されます。ここでコードを記述せずにデザイン全体を編集できます。

次に、デザインにコントロールウィジェットを追加します。これを行うには、トップバーのControlに移動し、例としてGtkButtonを選択してGtkBox内の任意の場所にドラッグします。myButtonというIDを付けます。必要に応じて、右側のペインにあるGeneralタブを使用してボタンのテキストを変更することもできます。

GtkButtonはクリック可能なウィジェットなので、Pythonハンドラーを定義して後で適切なコードを記述できます。右側のメニューのSignalsタブに移動し、clickedシグナルのハンドラーを指定します。この例では、on_button_clickedと呼びます。

これで、GUIデザインをプロジェクトファイルとして保存できます。ファイルをmyDesign.gladeとして保存します。

PythonコードからGladeデザインファイルを使用する

myDesign.gladeファイルと同じディレクトリにapp.pyファイルを作成します。次のコードをこのファイルに貼り付けます。

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from gi.repository import Gdk
class MyApp:
def __init__(self):
# GUIを構築するためにGladeファイルをロードする
self.builder = Gtk.Builder()
self.builder.add_from_file("myDesign.glade")
# Gladeからメインウィンドウを取得して終了イベントを設定する
self.window = self.builder.get_object("myMainWindow")
self.window.connect("destroy", Gtk.main_quit)
# Gladeからボタンを取得してクリックイベントを接続する
self.button = self.builder.get_object("myButton")
self.button.connect("clicked", self.on_button_clicked)
# 背景色を切り替える変数
self.color_toggle = False
def on_button_clicked(self, widget):
# ボタンをクリックすると背景色が変化する
color = "#FF0000" if self.color_toggle else "#00FF00"
self.window.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse(color))
self.color_toggle = not self.color_toggle
def run(self):
self.window.show_all()
Gtk.main()
if __name__ == "__main__":
app = MyApp()
app.run()

このコードは、ボタンをクリックするたびに背景の色を変更します。Gladeで定義したウィジェットのIDを渡すself.builder.get_object()への呼び出しに注意してください。

このコマンドを使用してPythonスクリプトを実行し、結果を確認します。

python3 app.py

PythonのGUI開発にGTK+とGladeを使用する利点

PythonのGUI開発にGTK+とGladeを使用すると、明確な利点があります。通常、GUIを作成するには多くの時間と労力が必要です。しかし、Glade Interface Designerを使用すると、そのプロセスをスピードアップできます。Gladeはまた、例にあるボタンのように、それぞれが使いやすいくさまざまなウィジェットを提供しています。

Gladeの重要な利点は、GUIのデザインとコードを分離できることです。これにより、GUIの保守と更新が簡素化されます。このアプローチは、現代のプログラミングの実践に沿った、よりクリーンで整理されたコードにつながります。