ウェブサイト検索

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 つの方法があります。

  1. コードのみを使用してグラフィカル インターフェイスを作成します。
  2. Glade 」プログラムを使用したグラフィカル インターフェイスの設計。これは、GTK+ インターフェイスを簡単に設計するための RAD ツールです。Glade は、GUI を構築するために任意のプログラミング言語で使用できる XML ファイルとして 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!」という文がターミナルに出力されます。

コードを詳しく解説していきます。

  1. #!/usr/bin/python: Python インタープリタ (ほとんどの場合、バージョン 2.7) のデフォルトのパス。この行はすべての Python ファイルの最初の行である必要があります。
  2. # -*-coding: utf-8 -*-: ここではファイルのデフォルトのコーディングを設定します。英語以外の言語をサポートしたい場合は UTF-8 が最適です。そのままにしておきます。 。
  3. from gi.repository import Gtk: ここでは、プログラムで使用するために GTK 3 ライブラリをインポートしています。
  4. クラス ourwindow(Gtk.Window): ここでは、「ourwindow 」という新しいクラスを作成し、クラスのオブジェクト タイプを「Gtk.Window 」に設定しています。
  5. def __init__(self): 新しいものは何もありません。ここではメイン ウィンドウ コンポーネントを定義しています。
  6. Gtk.Window.__init__(self, title=”My Hello World Program”): この行を使用して、「My Hello World Program」のタイトルを「ourwindow」ウィンドウに設定しています。変更することもできます。よかったらタイトルも。
  7. Gtk.Window.set_default_size(self, 400,325): この行については説明の必要はないと思います。ここではウィンドウのデフォルトの幅と高さを設定しています。
  8. Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): この行を使用すると、ウィンドウのデフォルトの位置を設定できます。この場合は、中央に設定します。 「Gtk.WindowPosition.CENTER」パラメータを使用して、必要に応じて「Gtk.WindowPosition.MOUSE」に変更して、マウスポインタの位置でウィンドウを開くことができます。
  9. button1=Gtk.Button(“Hello, World!”): 新しい Gtk.Button を作成し、それを「button1」と名付けました。ボタンのデフォルトのテキストは「Hello, World!」です。 」では、必要に応じて任意の Gtk ウィジェットを作成できます。
  10. button1.connect(“clicked”, self.whenbutton1_clicked): ここでは、「clicked」シグナルを「whenbutton1_clicked」アクションにリンクしています。これにより、ボタンがクリックされると、「whenbutton1_clicked」アクションが実行されます。がアクティブ化されます。
  11. self.add(button1): Gtk ウィジェットを表示したい場合は、デフォルトのウィンドウに追加する必要があります。この単純な行は、「button1」ウィジェットをウィンドウに追加します。これは非常に必要です。これを行う。
  12. def whenbutton1_clicked(self, button): ここで「whenbutton1_clicked 」アクションを定義しています。「button1 」ウィジェットがクリックされたときに何が起こるかを定義しています。 ) 」パラメーターは、信号の親オブジェクト タイプを指定するために重要です。
  13. print "Hello, World!": ここではこれ以上説明する必要はありません。
  14. window=ourwindow(): 新しいグローバル変数を作成し、それを ourwindow() クラスに設定して、後で GTK+ ライブラリを使用して呼び出せるようにする必要があります。
  15. window.connect(“delete-event”, Gtk.main_quit): ここで、「delete-event」シグナルを「Gtk.main_quit」アクションに接続しています。これは、イベントを削除するために重要です。プログラムウィンドウを自動的に閉じた後、すべてのウィジェットが表示されます。
  16. window.show_all(): ウィンドウを表示します。
  17. 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 」であることがわかります。右側のツールバーの [Signals] タブを参照して、「clicked 」シグナルを検索して「」と入力します。 >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! 」という文が端末に出力されることがわかります。

それでは、新しい点について説明しましょう。

  1. クラス ハンドラー: ここでは、GUI 用に作成したアクションとシグナルの定義を含む「ハンドラー」というクラスを作成しています。
  2. builder=Gtk.Builder(): Gtk.Builder ウィジェットである「builder」という新しいグローバル変数を作成しました。これは .glade ファイルをインポートするために重要です。
  3. builder.add_from_file(“myprogram.glade”): ここでは、プログラムのデフォルト GUI として使用するために「myprogram.glade」ファイルをインポートしています。
  4. builder.connect_signals(Handler()): この行は、.glade ファイルをハンドラー クラスに接続します。これにより、プログラムの実行時に「Handler」クラスで定義したアクションとシグナルが正常に動作します。 。
  5. ournewbutton=builder.get_object(“button1”): ここで、.glade ファイルから “button1” オブジェクトをインポートし、それを使用するためにグローバル変数 “ournewbutton” にも渡します。後ほどプログラムで説明します。
  6. ournewbutton.set_label(“Hello, World!”): 「set.label」メソッドを使用して、デフォルトのボタンテキストを「Hello, World!」に設定しました。 " 文。
  7. window=builder.get_object(“window1”): ここでは、プログラムの後半で表示するために、.glade ファイルから「window1 」オブジェクトを呼び出しました。

以上です! Linux 上で最初のプログラムが正常に作成されました。

もちろん、何かを実行する実際のアプリケーションを作成するには、さらに複雑な作業が必要です。そのため、次の場所にある GTK+ ドキュメントと GObject API を参照することをお勧めします。

  1. GTK+ リファレンスマニュアル
  2. Python GObject API リファレンス
  3. PyGオブジェクトリファレンス

これまでに Linux デスクトップでアプリケーションを開発したことがありますか?それを行うためにどのようなプログラミング言語とツールが使用されましたか? Python と GTK 3 を使用してアプリケーションを作成することについてどう思いますか?