PyGObject を使用して Linux デスクトップで GUI アプリケーションを作成する方法 - パート 1
Linux でのアプリケーションの作成はさまざまな方法で行うことができますが、方法は限られているため、最も単純で機能的なプログラミング言語とライブラリを使用する必要があります。そのため、Linux でのアプリケーションの作成について簡単に説明します。 \PyGObject と呼ばれる Python プログラミング言語で GTK+ ライブラリを使用するデスクトップ。
PyGObject は GObject Introspection を使用して Python などのプログラミング言語のバインディングを作成します。PyGObject は PyGTK の次世代であり、PyGObject=Python + GTK3 と言えます。

今日は、GTK+ ライブラリとPyGobject 言語を使用して Linux デスクトップで GUI (グラフィカル ユーザー インターフェイス) アプリケーションを作成するシリーズを開始します。このシリーズでは次のトピックを取り上げます。
Pythonについて
まず、Python の基本的な知識が必要です。 Python は、非常に現代的で使いやすいプログラミング言語です。 Python は世界で最も有名なプログラミング言語の 1 つであり、Python を使用すると、多くの優れたアプリケーションやツールを作成できます。 codeacademy.com にあるような無料コースを受講したり、次の場所で Python に関する書籍を読んだりすることができます。
GTK+について
GTK+ は、デスクトップ アプリケーション用のグラフィカル ユーザー インターフェイスを作成するためのオープンソースのクロスプラットフォーム ツールキットです。最初は 1998 年に GIMP 用の GUI ツールキットとして開始され、その後、他の多くのアプリケーションやすぐに GUI を作成するための最も有名なライブラリの 1 つになりました。 GTK+ は LGPL ライセンスに基づいてリリースされています。
Linux での GUI アプリケーションの作成
GTK+ と Python を使用してアプリケーションを作成するには 2 つの方法があります。
- コードのみを使用してグラフィカル インターフェースを作成する
- 「Glade」プログラムを使用したグラフィカル インターフェースの設計。GTK+ インターフェースを簡単に設計するための RAD ツールです。Glade は、構築するために任意のプログラミング言語で使用できる XML ファイルとして GUI を生成します。 GUI の場合、GUI の XML ファイルをエクスポートした後、その XML ファイルをプログラムにリンクして、必要なジョブを実行できるようになります。
両方の方法について簡単に説明します。
コードのみの方法
コードのみを使用して GUI を記述することは、初心者プログラマーにとっては少し難しく、非常に時間の無駄になる可能性があります。しかし、これを使用すると、Glade などのツールを使用して作成するものよりも、プログラム用の非常に機能的な GUI を作成できます。
次の例を見てみましょう。
#!/usr/bin/python # -*- coding: utf-8 -*- from gi.repository import Gtk class ourwindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="My Hello World Program") Gtk.Window.set_default_size(self, 400,325) Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER) button1 = Gtk.Button("Hello, World!") button1.connect("clicked", self.whenbutton1_clicked) self.add(button1) def whenbutton1_clicked(self, button): print "Hello, World!" window = ourwindow() window.connect("delete-event", Gtk.main_quit) window.show_all() Gtk.main()
上記のコードをコピーして「test.py」ファイルに貼り付け、test.py ファイルに 755 権限を設定し、後で「./test.py<」を使用してファイルを実行します。」、それが得られます。
# nano test.py # chmod 755 test.py # ./test.py

ボタンをクリックすると、「Hello, World!」という文がターミナルに出力されます。

コードを詳しく解説していきます。
- #!/usr/bin/python: Python インタープリター (ほとんどの場合、バージョン 2.7) のデフォルトのパス。この行はすべての Python ファイルの最初の行である必要があります。
- # -*-coding: utf-8 -*-: ここでファイルのデフォルトのコーディングを設定します。英語以外の言語をサポートしたい場合は UTF-8 が最適です。そのままにしておきます。そのようなものです。
- from gi.repository import Gtk: ここでは、プログラムで使用するために GTK 3 ライブラリをインポートしています。
- クラス ourwindow(Gtk.Window): ここでは、\ourwindow という新しいクラスを作成し、クラス オブジェクト タイプを \Gtk.Window に設定しています。
- def __init__(self): 新しいものは何もありません。ここではメイン ウィンドウ コンポーネントを定義しています。
- Gtk.Window.__init__(self, title=”My Hello World Program”): この行を使用して、「My Hello World Program」のタイトルを「ourwindow」に設定します。ウィンドウでは、必要に応じてタイトルを変更できます。
- Gtk.Window.set_default_size(self, 400,325): この行については説明の必要はないと思います。ここではウィンドウのデフォルトの幅と高さを設定しています。
- Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): この行を使用すると、ウィンドウのデフォルトの位置を設定できます。この場合は、それを設定します。 \Gtk.WindowPosition.CENTER パラメータを使用して中央に移動します。必要に応じて、これを \Gtk.WindowPosition.MOUSE に変更して、マウス ポインタの位置でウィンドウを開くことができます。
- button1=Gtk.Button(“Hello, World!”): 新しい Gtk.Button を作成し、それを「button1」と名付けました。ボタンのデフォルトのテキストは「」です。 Hello, World!」では、必要に応じて Gtk ウィジェットを作成できます。
- button1.connect(“clicked”, self.whenbutton1_clicked): ここでは、「clicked」シグナルを「whenbutton1_clicked」アクションにリンクしています。これにより、ボタンがクリックされたときに、 「whenbutton1_clicked」アクションが有効になります。
- self.add(button1): Gtk ウィジェットを表示したい場合は、デフォルトのウィンドウに追加する必要があります。この単純な行は、「button1」ウィジェットをウィンドウに追加します。これを行うことが非常に必要です。
- def whenbutton1_clicked(self, button): ここで「whenbutton1_clicked」アクションを定義しています。「button1」ウィジェットがクリックされたときに何が起こるかを定義しています。 \(self, button) パラメータは、信号の親オブジェクト タイプを指定するために重要です。
- 「Hello, World!」を印刷: ここではこれ以上説明する必要はありません。
- window=ourwindow(): 新しいグローバル変数を作成し、それを ourwindow() クラスに設定して、後で GTK+ ライブラリを使用して呼び出せるようにする必要があります。
- window.connect(“delete-event”, Gtk.main_quit): ここで、「delete-event」信号を「Gtk.main_quit」アクションに接続しています。これは次のとおりです。プログラム ウィンドウを自動的に閉じた後、すべてのウィジェットを削除するために重要です。
- window.show_all(): ウィンドウを表示します。
- Gtk.main(): Gtk ライブラリを実行します。
それだけです、簡単ですよね?大規模なアプリケーションを作成する場合には非常に機能的です。コードのみの方法を使用した GTK+ インターフェイスの作成の詳細については、次の公式ドキュメント Web サイトを参照してください。
Python GTK3 チュートリアル
Glade デザイナーのやり方
記事の冒頭で述べたように、Glade はプログラムに必要なインターフェイスを作成するための非常に簡単なツールであり、開発者の間では非常に有名で、多くの優れたアプリケーション インターフェイスがこれを使用して作成されました。この方法は「迅速なアプリケーション開発」と呼ばれます。
Glade の使用を開始するには、Debian/Ubuntu/Mint で次のコマンドを実行して Glade をインストールする必要があります。
$ sudo apt-get install glade
RedHat/Fedora/CentOS で、次を実行します。
# yum install glade
プログラムをダウンロードしてインストールし、実行すると、左側に利用可能な Gtk ウィジェットが表示されます。新しいウィンドウを作成するには、「ウィンドウ」ウィジェットをクリックします。

新しい空のウィンドウが作成されていることがわかります。

これで、いくつかのウィジェットを追加できるようになります。左側のツールバーで「ボタン」ウィジェットをクリックし、空のウィンドウをクリックしてボタンをウィンドウに追加します。

ボタン ID が「button1」であることがわかります。右側のツールバーの「シグナル」タブを参照して、「クリック」シグナルを検索して「\」と入力します。その下の「button1_clicked」。


GUI を作成したので、エクスポートしましょう。 [ファイル] メニューをクリックして [保存] を選択し、ファイルをホーム ディレクトリに \myprogram.glade という名前で保存します。 >」を選択して終了します。

次に、新しい \test.py ファイルを作成し、その中に次のコードを入力します。
#!/usr/bin/python # -*- coding: utf-8 -*- from gi.repository import Gtk class Handler: def button_1clicked(self, button): print "Hello, World!" builder = Gtk.Builder() builder.add_from_file("myprogram.glade") builder.connect_signals(Handler()) ournewbutton = builder.get_object("button1") ournewbutton.set_label("Hello, World!") window = builder.get_object("window1") window.connect("delete-event", Gtk.main_quit) window.show_all() Gtk.main()
ファイルを保存し、以前と同様に 755 のアクセス許可を付与し、\./test.py を使用して実行すると、これが得られます。
# nano test.py # chmod 755 test.py # ./test.py

ボタンをクリックすると、「Hello, World!」という文が端末に出力されることがわかります。
それでは、新しい点について説明しましょう。
- クラス ハンドラー: ここでは、GUI 用に作成したアクションとシグナルの定義を含む「ハンドラー」というクラスを作成します。
- builder=Gtk.Builder(): Gtk.Builder ウィジェットである \builder という新しいグローバル変数を作成しました。これは .glade ファイルをインポートするために重要です。< /li>
- builder.add_from_file(“myprogram.glade”): ここでは、プログラムのデフォルト GUI として使用するために、\myprogram.glade ファイルをインポートしています。
- builder.connect_signals(Handler()): この行は、.glade ファイルをハンドラー クラスに接続します。これにより、\Handler クラスで定義したアクションとシグナルが正常に動作するようになります。私たちがプログラムを実行します。
- ournewbutton=builder.get_object(“button1”): ここで、.glade ファイルから \button1 オブジェクトをインポートし、それをグローバル変数\にも渡します。 ournewbutton」を使用して、後ほどプログラムで使用します。
- ournewbutton.set_label(“Hello, World!”): \set.label メソッドを使用して、デフォルトのボタン テキストを \Hello, World! に設定しました。文。
- window=builder.get_object(“window1”): ここでは、プログラムの後半で表示するために、.glade ファイルから \window1 オブジェクトを呼び出しました。
以上です! Linux 上で最初のプログラムが正常に作成されました。
もちろん、何かを実行する実際のアプリケーションを作成するには、さらに複雑な作業が必要です。そのため、次の場所にある GTK+ ドキュメントと GObject API を参照することをお勧めします。
- GTK+ リファレンス マニュアル
- Python GObject API リファレンス
- PyGObject リファレンス
これまでに Linux デスクトップでアプリケーションを開発したことがありますか?それを行うためにどのようなプログラミング言語とツールが使用されましたか? Python と GTK 3 を使用してアプリケーションを作成することについてどう思いますか?