PyGObjectを使用してLinuxデスクトップでGUIアプリケーションを作成する方法-パート1


Linuxでのアプリケーションの作成はさまざまな方法で実行できますが、実行方法は限られているため、最も単純で関数型のプログラミング言語とライブラリを使用します。そのため、Linuxでのアプリケーションの作成について簡単に説明します。 「PyGObject」と呼ばれるPythonプログラミング言語を備えたGTK +ライブラリを使用するデスクトップ。

PyGObjectはGObjectIntrospectionを使用して、Pythonなどのプログラミング言語のバインディングを作成します。PyGObjectはPyGTKの次世代であり、PyGObject u003d Python + GTK3と言えます。

今日は、GTK +ライブラリと PyGobject 言語を使用してLinuxデスクトップでGUI(グラフィカルユーザーインターフェイス)アプリケーションを作成するシリーズを開始します。このシリーズでは、次のトピックについて説明します。

まず、Pythonの基本的な知識が必要です。 Python は、非常に現代的で使いやすいプログラミング言語です。これは、Pythonを使用して、世界で最も有名なプログラミング言語の1つであり、多くの優れたアプリケーションとツールを作成できます。 codeacademy.comのような無料のコースを受講するか、Pythonに関する本を次のURLで読むことができます。

GTK + は、デスクトップアプリケーションのグラフィカルユーザーインターフェイスを作成するためのオープンソースのクロスプラットフォームツールキットです。1998年にGIMPのGUIツールキットとして開始され、その後、他の多くのアプリケーションで使用されました。すぐにGUIを作成するための最も有名なライブラリの1つになりました。 GTK +はLGPLライセンスの下でリリースされています。

LinuxでのGUIアプリケーションの作成

GTK +とPythonを使用してアプリケーションを作成する方法は2つあります。

  1. Writing the graphical interface using code only.
  2. Designing the graphical interface using the “Glade” program; which is RAD tool to design GTK+ interfaces easily, Glade generates the GUI as a XML file which can be used with any programming language to build the GUI, after exporting the GUI’s XML file, we’ll be able to link the XML file with our program to do the jobs we want.

両方の方法を簡単に説明します。

コードのみを使用して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: The default path for the Python interpreter (version 2.7 in most cases), this line must be the first line in every Python file.
  2. # -*- coding: utf-8 -*-: Here we set the default coding for the file, UTF-8 is the best if you want to support non-English languages, leave it like that.
  3. from gi.repository import Gtk: Here we are importing the GTK 3 library to use it in our program.
  4. Class ourwindow(Gtk.Window): Here we are creating a new class, which is called “ourwindow”, we are also setting the class object type to a “Gtk.Window”.
  5. def __init__(self): Nothing new, we’re defining the main window components here.
  6. Gtk.Window.__init__(self, title=”My Hello World Program”): We’re using this line to set the “My Hello World Program” title to “ourwindow” window, you may change the title if you like.
  7. Gtk.Window.set_default_size(self, 400,325): I don’t think that this line need explanation, here we’re setting the default width and height for our window.
  8. Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): Using this line, we’ll be able to set the default position for the window, in this case, we set it to the center using the “Gtk.WindowPosition.CENTER” parameter, if you want, you can change it to “Gtk.WindowPosition.MOUSE” to open the window on the mouse pointer position.
  9. button1 = Gtk.Button(“Hello, World!”): We created a new Gtk.Button, and we called it “button1”, the default text for the button is “Hello, World!”, you may create any Gtk widget if you want.
  10. button1.connect(“clicked”, self.whenbutton1_clicked): Here we’re linking the “clicked” signal with the “whenbutton1_clicked” action, so that when the button is clicked, the “whenbutton1_clicked” action is activated.
  11. self.add(button1): If we want our Gtk widgets to appear, we have to add them to the default window, this simple line adds the “button1” widget to the window, it’s very necessary to do this.
  12. def whenbutton1_clicked(self, button): Now we’re defining the “whenbutton1_clicked” action here, we’re defining what’s going to happen when the “button1” widget is clicked, the “(self, button)” parameter is important in order to specific the signal parent object type.
  13. print “Hello, World!”: I don’t have to explain more here.
  14. window = ourwindow(): We have to create a new global variable and set it to ourwindow() class so that we can call it later using the GTK+ library.
  15. window.connect(“delete-event”, Gtk.main_quit): Now we’re connecting the “delete-event” signal with the “Gtk.main_quit” action, this is important in order to delete all the widgets after we close our program window automatically.
  16. window.show_all(): Showing the window.
  17. Gtk.main(): Running the Gtk library.

それだけです、簡単ではありませんか?また、大規模なアプリケーションを作成する場合は非常に機能的です。コードのみの方法を使用してGTK +インターフェースを作成する方法の詳細については、次の公式ドキュメントWebサイトにアクセスしてください。

PythonGTK3チュートリアル

記事の冒頭で述べたように、Gladeは、プログラムに必要なインターフェイスを作成するための非常に簡単なツールです。開発者の間で非常に有名であり、Gladeを使用して多くの優れたアプリケーションインターフェイスが作成されました。この方法は「迅速なアプリケーション開発」と呼ばれます。

使用を開始するには、Debian/Ubuntu/MintでGladeをインストールする必要があります。

$ sudo apt­-get install glade

RedHat/Fedora/CentOSで、以下を実行します。

# yum install glade

プログラムをダウンロードしてインストールし、実行すると、左側に利用可能なGtkウィジェットが表示されます。新しいウィンドウを作成するには、「 window 」ウィジェットをクリックします。

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

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

ボタン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. class Handler: Here we’re creating a class called “Handler” which will include the the definitions for the actions & signals, we create for the GUI.
  2. builder = Gtk.Builder(): We created a new global variable called “builder” which is a Gtk.Builder widget, this is important in order to import the .glade file.
  3. builder.add_from_file(“myprogram.glade”): Here we’re importing the “myprogram.glade” file to use it as a default GUI for our program.
  4. builder.connect_signals(Handler()): This line connects the .glade file with the handler class, so that the actions and signals that we define under the “Handler” class work fine when we run the program.
  5. ournewbutton = builder.get_object(“button1”): Now we’re importing the “button1” object from the .glade file, we’re also passing it to the global variable “ournewbutton” to use it later in our program.
  6. ournewbutton.set_label(“Hello, World!”): We used the “set.label” method to set the default button text to the “Hello, World!” sentence.
  7. window = builder.get_object(“window1”): Here we called the “window1” object from the .glade file in order to show it later in the program.

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

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

  1. GTK+ Reference Manual
  2. Python GObject API Reference
  3. PyGObject Reference

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

全著作権所有。 © Linux-Console.net • 2019-2022