웹사이트 검색

Linux에서 PyGobject 도구를 사용하여 더욱 발전된 GUI 응용 프로그램 만들기 - 2부


우리는 PyGObject를 사용하여 Linux 데스크탑에서 GUI 애플리케이션을 생성하는 방법에 대한 시리즈를 계속합니다. 이것은 시리즈의 두 번째 부분이며 오늘은 일부 고급 위젯을 사용하여 보다 기능적인 애플리케이션을 생성하는 방법에 대해 이야기하겠습니다.

요구사항

  1. PyGObject를 사용하여 Linux에서 GUI 애플리케이션 만들기 – 1부

이전 기사에서 우리는 PyGObject를 사용하여 GUI 응용 프로그램을 만드는 두 가지 방법, 즉 코드 전용 방법Glade 디자이너 방법이 있다고 말했습니다. 하지만 지금부터는 대부분의 사용자에게 훨씬 더 쉽기 때문에 Glade 디자이너 방식만 설명할 것입니다. python-gtk3-tutorial을 사용하여 직접 코드 전용 방식을 배울 수 있습니다.

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

1. 프로그래밍을 시작해 보겠습니다! 애플리케이션 메뉴에서 Glade 디자이너를 엽니다.

2. 새 창을 만들려면 왼쪽 사이드바에 있는 ' ' 버튼을 클릭하세요.

3. '상자' 위젯을 클릭하고 빈 창에 놓습니다.

4. 원하는 상자 수를 입력하라는 메시지가 표시되면 3으로 설정하세요.

그리고 상자가 생성된 것을 볼 수 있습니다. 이 상자는 창에 1개 이상의 위젯을 추가할 수 있도록 하는 데 중요합니다.

5. 이제 상자 위젯을 클릭하고 방향 유형을 수직에서 수평으로 변경합니다.

6. 간단한 프로그램을 만들려면 '텍스트 입력', '콤보 상자 텍스트' 및 '버튼'을 추가하세요. ” 각 상자에 대한 위젯을 사용하려면 다음과 같은 것이 있어야 합니다.

7. 이제 오른쪽 사이드바에서 'window1' 위젯을 클릭하고 위치를 '가운데'로 변경합니다.

"외관" 섹션까지 아래로 스크롤합니다. 그리고 "내 프로그램" 창 제목을 추가합니다.

8. 또한 “아이콘 이름” 상자를 클릭하여 창의 아이콘을 선택할 수도 있습니다.

9. 애플리케이션의 기본 높이너비를 변경할 수도 있습니다. 모든 작업을 완료하면 다음과 같은 결과가 나올 것입니다.

어떤 프로그램에서든 가장 중요한 것 중 하나는 "정보" 창을 만드는 것입니다. 이를 위해 먼저 이전에 만든 일반 버튼을 스톡 버튼으로 변경해야 합니다. 사진.

10. 이제 위젯에서 이벤트가 발생할 때 특정 작업을 실행하기 위해 일부 신호를 수정해야 합니다. 텍스트 입력 위젯을 클릭하고 오른쪽 사이드바에 있는 "신호" 탭으로 전환한 다음 "활성화"를 검색하고 핸들러를 다음으로 변경합니다. "enter_button_clicked", "활성화" 신호는 텍스트에 초점을 맞춘 상태에서 "Enter " 키를 눌렀을 때 전송되는 기본 신호입니다. 입장 위젯.

정보 버튼 위젯에 대한 "clicked" 신호에 대한 또 다른 핸들러를 추가하고 이를 클릭한 다음 "clicked" 신호를 "button_is_clicked"로 변경해야 합니다. “.

11.공통” 탭으로 이동하여 다음과 같이 “포커스 있음”을 표시합니다(정보 버튼에 기본 포커스를 제공하려면 항목 대신).

12. 이제 왼쪽 사이드바에서 새로운 '대화상자 정보' 창을 만듭니다.

그러면 “대화상자 정보” 창이 생성된 것을 확인할 수 있습니다.

수정해 보겠습니다. 오른쪽 사이드바에서 다음 설정을 삽입했는지 확인하세요.

위와 같이 설정을 하면 Window에 대해 다음과 같은 내용이 나옵니다.

위 창에서 빈 공간을 볼 수 있지만 상자 수를 3에서 2로 줄여서 제거하거나 원하는 경우 위젯을 추가할 수 있습니다.

13. 이제 파일을 홈 폴더에 "ui.glade"라는 이름으로 저장하고 텍스트 편집기를 열고 그 안에 다음 코드를 입력하세요.


#!/usr/bin/python
-*- coding: utf-8 -*-

from gi.repository import Gtk
class Handler:

    def button_is_clicked(self, button):
        ## The ".run()" method is used to launch the about window.
         ouraboutwindow.run()
        ## This is just a workaround to enable closing the about window.
         ouraboutwindow.hide()

    def enter_button_clicked(self, button):
        ## The ".get_text()" method is used to grab the text from the entry box. The "get_active_text()" method is used to get the selected item from the Combo Box Text widget, here, we merged both texts together".
         print ourentry.get_text() + ourcomboboxtext.get_active_text()

## Nothing new here.. We just imported the 'ui.glade' file.
builder = Gtk.Builder()
builder.add_from_file("ui.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")

window = builder.get_object("window1")

## Here we imported the Combo Box widget in order to add some change on it.
ourcomboboxtext = builder.get_object("comboboxtext1")

## Here we defined a list called 'default_text' which will contain all the possible items in the Combo Box Text widget.
default_text = [" World ", " Earth ", " All "]

## This is a for loop that adds every single item of the 'default_text' list to the Combo Box Text widget using the '.append_text()' method.
for x in default_text:
  ourcomboboxtext.append_text(x)

## The '.set.active(n)' method is used to set the default item in the Combo Box Text widget, while n = the index of that item.
ourcomboboxtext.set_active(0)
ourentry = builder.get_object("entry1")

## This line doesn't need an explanation :D
ourentry.set_max_length(15)

## Nor this do.
ourentry.set_placeholder_text("Enter A Text Here..")

## We just imported the about window here to the 'ouraboutwindow' global variable.
ouraboutwindow = builder.get_object("aboutdialog1")

## Give that developer a cookie !
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main

해당 파일을 "myprogram.py"라는 이름으로 홈 디렉토리에 저장하고 실행 권한을 부여하여 실행하십시오.

chmod 755 myprogram.py
./myprogram.py
This is what you will get, after running above script.

입력 상자에 텍스트를 입력하고 키보드의 “Enter” 키를 누르면 문장이 쉘에 인쇄되는 것을 볼 수 있습니다.

지금은 이것이 전부입니다. 완전한 애플리케이션은 아니지만 PyGObject를 사용하여 여러 항목을 연결하는 방법을 보여 드리고 싶었습니다. 모든 GTK 위젯에 대한 모든 메소드를 다음에서 볼 수 있습니다. gtkobjects.

메소드를 배우고, Glade를 사용하여 위젯을 생성하고, Python 파일을 사용하여 신호를 연결하면 됩니다. 전혀 어렵지 않아요 친구예요.

우리는 시리즈의 다음 부분에서 PyGObject에 대한 더 많은 새로운 사항을 설명할 것입니다. 그때까지 최신 정보를 유지하고 기사에 대한 의견을 제공하는 것을 잊지 마십시오.