웹사이트 검색

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을 사용하면 수많은 훌륭한 애플리케이션과 도구를 만들 수 있습니다. codeacademy.com에서 무료 강좌를 수강하거나 다음 사이트에서 Python에 관한 책을 읽을 수도 있습니다.

GTK+ 소개

GTK+는 데스크톱 응용 프로그램용 그래픽 사용자 인터페이스를 생성하기 위한 오픈 소스 크로스 플랫폼 도구 키트로, 1998년에 GIMP용 GUI 도구 키트로 처음 시작되었으며 이후 많은 다른 응용 프로그램과 곧 GUI를 만드는 가장 유명한 라이브러리 중 하나가 되었습니다. GTK+는 LGPL 라이센스에 따라 출시됩니다.

Linux에서 GUI 애플리케이션 만들기

GTK+ 및 Python을 사용하여 애플리케이션을 생성하는 방법에는 두 가지가 있습니다.

  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. # -*- 코딩: 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, 버튼): 이제 여기서는 "whenbutton1_clicked" 작업을 정의하고 "button1" 위젯을 클릭하면 무슨 일이 일어날지 정의합니다. )” 매개변수는 신호 상위 개체 유형을 지정하는 데 중요합니다.
  13. 'Hello, World!' 인쇄: 여기서 더 설명할 필요는 없습니다.
  14. window=ourwindow(): 나중에 GTK+ 라이브러리를 사용하여 호출할 수 있도록 새 전역 변수를 생성하고 이를 ourwindow() 클래스로 설정해야 합니다.
  15. window.connect(“delete-event”, Gtk.main_quit): 이제 “delete-event” 신호를 “Gtk.main_quit” 액션과 연결합니다. 이는 삭제를 위해 중요합니다. 프로그램 창을 자동으로 닫은 후 모든 위젯.
  16. window.show_all(): 창을 표시합니다.
  17. Gtk.main(): Gtk 라이브러리를 실행합니다.

그게 다야, 쉽지 않니? 대규모 애플리케이션을 만들고 싶다면 매우 기능적입니다. 코드 전용 방식을 사용하여 GTK+ 인터페이스를 생성하는 방법에 대한 자세한 내용을 보려면 다음 공식 문서 웹사이트를 방문하세요.

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!” 문장이 터미널에 인쇄되는 것을 볼 수 있습니다.

이제 새로운 사항을 설명하겠습니다.

  1. 클래스 핸들러: 여기서는 GUI용으로 생성한 작업 및 신호에 대한 정의를 포함하는 "Handler"라는 클래스를 생성합니다.
  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를 사용하여 애플리케이션을 만드는 것에 대해 어떻게 생각하시나요?