PyGTK 3 : Python + GTK + 3이 포함 된 미니 GUI 튜토리얼

PyGTK 3.0에서도 작동하는 PyGTK 3.4으로 작은 프로그램을 만들 것입니다. 이 작은 GUI는 프로그램을 두 개 이상의 파일로 나누는 방법을 알려줍니다.

새로운 PyGTK 3에 대한 Sebastian Pölsterl의 튜토리얼을 방문 할 수 있습니다. 여기에 새로운 튜토리얼이 있습니다. 링크를 남깁니다.

http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

이것은 Sebastian의 블로그입니다.

http://k-d-w.org/node/88

Sebastian의이 튜토리얼에 대한 비판은 프로그램을 여러 부분으로 나누거나 여러 파일로 나누는 방법을 가르치지 않는다는 것입니다.

크고 복잡한 모든 프로그램은 여러 파일로 나뉘며 파일은 다른 디렉토리, 즉 다른 폴더에 있습니다.

작은 예부터 시작하겠습니다.

다음은 gui.py라는 단일 파일의 작성 코드입니다. Gedit 텍스트 편집기 또는 가장 많이 사용하는 편집기를 열고 아래 코드를 복사하여 gui.py로 저장합니다.

from gi.repository import Gtk class gui () : def on_open_clicked (self, button) : print "\"Open \ "button was clicked"def on_close_clicked (self, button) : print "Closing application"Gtk.main_quit () def __init__ (self) : self.window = Gtk.Window () self.window.connect ( 'delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Open') self.button.connect ( "clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = '닫기') self.button.connect ( "clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

페디 멘트

def on_open_clicked (self, button) : print "\"Open \ "button was clicked"

열기 버튼을 클릭하면 단말기에서 활성화되는 기능입니다. 활성화 신호는 다음과 같습니다.

self.button.connect ( "clicked", self.on_open_clicked) def on_close_clicked (self, button) : print "응용 프로그램 닫기"Gtk.main_quit ()

닫기 버튼을 클릭하면 활성화되는 기능입니다.

우리가 실행하는 프로그램을 닫습니다.

그것을 활성화하는 신호는

self.button.connect ( "clicked", self.on_close_clicked) from gi.repository import Gtk ### 우리는 PyGTK 라이브러리를 호출합니다 ### class gui () : ### gui라는 클래스 정의가 메인 클래스입니다 # ##

위젯 선언 : 위젯은 우리가 사용하는 GUI 라이브러리에 의해 미리 결정된 프로그램입니다. 예를 들어 위젯은 버튼, 창, 상자 등입니다. 프로그램에서 선언 한 위젯입니다.

self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # 열기 버튼 #### self.button = Gtk.Button (label = 'Close') #### 닫기 버튼 #### self.window.add (self.box) #### 상자가 들어있는 window라는 창 #### self.box.pack_start (self.button, True, True, 0) ##### 버튼은 상자 ### self.window.show_all () ##라는 상자에 포함되어 있습니다. # 전체 창을 보여줍니다. ### gui = gui () ### gui 객체 생성 ####

우리의 경우 데스크탑의 simple 폴더에 프로그램을 배치합니다.

Fert

터미널로 폴더를 엽니 다. 제 경우에는 Linux Mint 14의 Nemo를 사용합니다.

닫은

컴파일하기 위해 터미널 python gui.py에 넣습니다.

그림을 참조하십시오.

단말기

이제 PyGTK 3 라이브러리로 만든 작은 프로그램이나 새 위젯을 볼 수 있습니다.

두 개의 버튼이있는 간단한 창입니다.

제목 없음

이제 프로그램을 세 부분으로 나누고 아래에 세 파일의 코드를 남깁니다.

첫 번째 gui.py 파일

from gi.repository import Gtk from destroy import destroy from io import io class gui (destroy, io) : def __init __ (self) : self.window = Gtk.Window () self.window.connect ( 'delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ( "clicked", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ( "clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

두 번째 io.py 파일

class io : def on_open_clicked (self, button) : print "\"Open \ "button was clicked"

세 번째 파일 destroy.py

gi.repository에서 가져 오기 Gtk 클래스 destroy : def on_close_clicked (self, button) : print "Closing application"Gtk.main_quit ()

우리의 경우 동일한 폴더에 세 개의 파일을 배치하고 폴더를 단순 분할이라고합니다.

간편한 설치

세 파일을 컴파일합니다. 터미널로 폴더를 열고 간단히 터미널에 다시 넣습니다.

python gui.py

gui.py 코드 수정

from destroy import destroy ### 문을 가져 오기 파일 destroy.py ### from io import io ### 문에서 파일 io.py ### 클래스 GUI를 가져 오기 위해 클래스로 : #### main 우리는 subclasses destroy 및 io ####를 추가합니다.

문장이

def on_open_clicked (self, button) : print "\"Open \ "button was clicked"

gui.py가 아니라 io.py 파일에 있습니다.

문장

def on_close_clicked (self, button) :

"응용 프로그램 종료"인쇄
Gtk.main_quit ()

destroy.py 파일에 있습니다.

따라서 프로그램을 동시에 다른 디렉토리에있는 여러 파일로 나눌 수 있습니다.

반면에 Python은 자유 소프트웨어의 기둥이며 GTK 3.6 /3.8에서 작동하도록 조정되었으며 이름은 PyGTK입니다. KDE에 대한 Python의 적응을 PyQT라고합니다.

Python은 Mac OS 및 WINDOWS에 맞게 조정되었습니다.

이 PyGTK3 미니 튜토리얼이 도움이 되었기를 바랍니다. 그들은 그들이 원하는 모든 건설적인 비판을 할 수 있습니다.

Gtk 3.4 /3.6 및 Vala GTK 3.4 / 3.6도 알고 있습니다.

http://www.youtube.com/watch?v=9ckRn_sx8CE

마지막으로 KDE 사용자는 KDE 용 미니 튜토리얼을하지 않은 것에 대해 사과합니다.


33 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   썩은 87

    kde에서는 쉽게 gui를 생성하기 위해 kdevelop을 사용하는 것을 선호하지만 x 일을 수행하는 프로세스를 찾는 데 여전히 어려움이 있습니다. '(

  2.   st0rmt4il

    Python : D를 사용하는 사람들에게 좋습니다.

    안녕하십니까!

  3.   파블로

    안녕하세요, 저는이 커뮤니티를 오랫동안 팔로우 해 왔으며 이것이 제가 처음으로 댓글을 달았는지 또는 이전에 이미 해본 적이 있는지 잘 모르겠습니다. 😀 (웹에 댓글을 작성하는 것은별로 주어지지 않았습니다). 문제는 관리자로서 Elav와 KZKG ^ Gaara에게 제안을 남기기 위해 수행하는 것이며, 최근에는 다른 프로그래밍 언어로 된 코드가있는 더 많은 게시물을 보게되므로 구문 색상 지정을위한 플러그인을 추가하는 것이 좋을 것 같습니다. 나는 꽤 많은 플러그인이 있다는 것을 알고 있지만 나는 워드 프레스 사용자가 아니기 때문에 어떤 플러그인도 시도하지 않았으므로 요청의 실행 가능성에 대해 생각하도록 남겨 둡니다. 저는이 기회를 이용하여 나머지 독자들에게 아이디어에 대해 어떻게 생각하는지 물어볼 수 있습니다. 장식없이 코드를 읽는 것을 선호하는 사람들이 있다는 것을 알고 있기 때문입니다. 이 주제에 대한 토론을 본 기억이 없어서 여기에 이미 언급되어 있고 어떤 이유로 인해 거부 된 경우 사과드립니다.

    1.    Marianogaudix

      사실은 프로그래밍 언어의 코드를 강조하기 위해 구문에 색상을 지정할 수있는 옵션을 갖고 싶습니다.
      프로그래밍 언어를 배우려는 사용자에게 도움이 될 것입니다.

      하지만 저도 포럼에 익숙하고 함께 토론하고 배울 수 있습니다.

      1.    엘리오타임3000

        GNU Emacs는 적어도 작업 할 프로그래밍 언어 검사기를 선택해야하기 때문에 더 편안합니다 (프로세서에 더 많은 무게를 두지 않으려면 GNU Nano를 사용하고 최대한 미니멀리즘을 즐기십시오).

        1.    Marianogaudix

          Elio는 WordPress에 대해 이야기하고 있습니다. 블로그에 구현 Desde Linux. 게시물의 글자를 색칠하는 기능은 없습니다.

          1.    엘리오타임3000

            아 죄송합니다.

        2.    판데브92

          Naaa emacs는 84 개의 손가락 XD .., 일반인, 텍스트 메이트, sublimetext 또는 메모장을 가진 사람들에게 편안합니다 ++ xd

          1.    엘리오타임3000

            가능성이 희박한 것은 GNU Emacs와 키보드 단축키를 잘 처리하는 데 필요한 타이핑을 배우지 않았다는 것입니다. 또한 GUI를 사용하면 메뉴를 쉽게 사용할 수 있습니다 (Windows에서 사용할 수 있지만 일반 모드에서는 사용하지 않는 것이 좋지만 win32가 스크립트를 보이콧하지 않도록 명령 프롬프트 모드에서는 사용하지 않는 것이 좋습니다).

  4.   Carper

    아주 멋진 튜토리얼. 그런데 파이썬 소스 코드는 컴파일되지 않고 해석 된 언어입니다.

    1.    Giskard

      의사 코드로 컴파일 할 수 있습니다. 기계어가 아니라 인터프리터에게 무언가를 나타내는 바이트이지만 그 과정도 컴파일이라고 부릅니다. 이런 의미에서 무언가가 컴파일되었다고 말할 수 있습니다.

  5.   hty

    Windows에서 사용 가능한 최신 버전이 2이기 때문에 pytgk2.24를 배우는 것이 좋습니다. 시리즈 3은 부재로 인해 눈에.니다. 그리고 나쁜 언어는 그놈이 각각의 새 버전에서 모든 API를 깨뜨린다고 말합니다.

    1.    Marianogaudix

      나는 GTK 3.4 / 3.6으로 목업을 프로그래밍했고 진실은 그들이 당신의 인내심과 머리를 깨뜨리고 코드를 다시 작성해야한다는 것입니다. 이제 Linux Mint 사람들이 GTK와 GNOME 프로젝트에 대해 불평하는 이유를 이해합니다.
      MINT의 사람들에게는 GTK 2.4에 동의합니다.

  6.   카를로스

    좋은 튜토리얼과 참조.
    코드가 삽입되었으므로 Python에서는 들여 쓰기가 필수이며 예제 코드에서 존중되어야합니다.

    안녕하십니까!

    1.    Marianogaudix

      파이썬의 필수 식별이 무엇으로 구성되어 있는지 설명해 주시겠습니까? 진실을 말씀 드리기 위해 저는 들어 본 적이 없습니다. 저는 영어로 된 PyGTK 2/3 포럼에 심하게 익숙해 져서 간과 할 수도 있습니다.

      1.    Giskard

        Python에서는 C에서와 같은 키를 사용하지 않거나 Pascal에서와 같이 시작 / 종료 블록을 사용하지 않지만 모든 것은 코드에 제공하는 들여 쓰기를 통해 이해됩니다. 즉, 블록은 들여 쓰기로 인식됩니다. 제가 특히 좋아하는 기능입니다. 당신은 키와 같은 것을 쓰는 것을 피합니다.

        1.    판데브92

          나는 그것을 좋아하지 않는다. xd 라인이 잘 표로 만들어져있는 것보다 두 개의 작은 키 또는 std :: endl을 넣는 것이 더 간단 해 보인다.

          1.    펠리페

            : p 당신의 프로그래밍 선생님이 0 점을 줄 것입니다. 아니면 직장에서 해고 될 것입니다. 가장 중요한 것은 코드가 의미하는 모든 것을 읽을 수 있다는 것입니다.

          2.    판데브92

            닫는 중괄호로 끝나기 때문에 훨씬 더 읽기 쉬운 XD ..

          3.    Giskard

            진심으로 ???


            int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}

            봤어? 들여 쓰기 없이는 잘 이해되지 않습니다. 그리고 그것은 쉬운 일입니다. 더 복잡한 것은 컴파일러 만이 이해합니다. 문제는 (사람이 코드를 이해하기 위해) 어쨌든 들여 쓰기를해야하므로 왜 중복되어 구분 기호를 사용해야합니까? 들여 쓰기로 충분하고 그게 다입니다.

          4.    판데브92

            물론 c / c ++로 작성된 프로그램에 대한 좋은 작성 규칙을 준수하지 않기 때문에 이해되는 것은 없습니다. 당신이 한 일은 다른 함수 안에있는 함수 안에 함수를 중첩하는 것과 같은 모든 것에 유효합니다. 그런 다음 이해할 수 있다면 xd를보고 싶습니다.

          5.    판데브92

            그건 그렇고, 두 가지 모양으로, 그 코드는 쉽게 이해할 수 있습니다 xD

          6.    Giskard

            들여 쓰기없이 컴파일하더라도 코드를 이해하기가 매우 어렵다는 것을 보여 드리기 위해 의도적으로 한 작업입니다. 따라서 두 가지 규칙이 있습니다. 구분 기호로 들여 쓰기 및 포함합니다. 그러나 그것은 중복됩니다. 파이썬에서 그러한 코드는 단순히 인터프리터가 받아들이지 않습니다. 그리고 오직 하나의 규칙이 있습니다 : 들여 쓰기. 쉬운.
            하지만 취향을 가진 모든 사람.

          7.    아테이 우스

            들여 쓰기와 비 들여 쓰기 둘 다 좋다. 필자는 세미콜론 스타일이나 루비를 선호하는데, 파이썬과 비슷하지만 들여 쓰기는 필요하지 않다.

            이것이 더 잘 이해되는 방법입니다. P :

            echo 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] =='- ')) {switch (argv [ 1] [1]) {case 'v': verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; 기본값 : fprintf (stderr,»Bad 옵션 % s \ n», argv [1]); 사용법 ();} ++ argv; –argc;} if (argc == 1) {do_file ( "print.in");} else {while (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} return (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'

            인사 😀

      2.    Giskard

        Carlos는 코드가 나오는 곳에 들여 쓰기가 없다는 것을 의미한다고 생각합니다. 복사 및 붙여 넣기를 사용하면 작동하지 않습니다. 게시물을 작성할 때 태그가 존재하는지 모르겠습니다. 언어 코드를 입력합니다. 존재하지 않으면두면 좋을 것입니다.

        1.    Giskard

          나는 이미 문제가 무엇인지 보았습니다. CODE 태그는 모든 공백과 탭을 제거합니다 (그렇게하면 안됩니다 !!!).하지만 nbsp를 넣으면 코드가 좋아 보입니다. A0 in hex (160 in dec) 글꼴에 따라 다를 수 있다고 생각하지만 (모르겠습니다). 사용하면 다음과 같이 나옵니다.

          def fib(n):
              a, b = 0, 1
              while a < n:
                  print(a)
                  a, b = b, a+b

          내 테스트에서는 좋아 보이지만 답변을 게시 할 때 미리보기가 없습니다 (그리고 있어야합니다 !!!) 나오지 않으면 내 잘못이 아닙니다 😉

          1.    Marianogaudix

            Sebastian Pölsterl이 PyGTK 3 자습서에 넣은 예제를 살펴보면 Sebastian은 레이블을 배치하지 않습니다.

            예 :

            http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example

            Sebastian의 튜토리얼을 모두 볼 수 있습니다.

          2.    Giskard

            난 당신이 무슨 뜻인지 모르겠어요. 제가 말하고있는 것은 여기 게시물에서 HTML 태그 "CODE"를 사용하여 코드로 입력 한 내용이 잘 들여 쓰기되도록하는 것이 불가능하다는 것입니다. 참조하는 페이지에서 페이지 소스를 보면 CODE를 사용하지 않고 다른 HTML 구분 기호를 사용함을 알 수 있습니다.
            귀하가 입력 한 코드에 위배되는 것이 아니라이 사이트의 게시 시스템의 결함을 지적합니다. 아마도 관리자가 수정할 수 있습니다.
            태그에 대해 말할 때 저는 분명히 Python이 아니라 HTML에 대해 이야기하고 있습니다. 어쨌든 Python에 들여 쓰기없이 코드를 넣으면 작동하지 않습니다. 초보자가 와서이 게시물에 표시된대로 코드를 복사하여 실행하려고하면 실패합니다. 당신은 초보자이기 때문에 실망 할 수 있습니다. 다시 말하지만, 잘못은 당신의 것이 아닙니다. 그리고 내 즉각적인 이전 답변에서 내가 한 일은 user-who-posts 수준에서 문제를 해결하는 방법을 제공하는 것이 었습니다.

          3.    Marianogaudix

            당신 말이 맞습니다. 코드를 복사하는 대신 사진을 업로드 했어야했습니다.
            PyGTK 3에서 명령문이 올바르게 정렬되는 방식을 보여줍니다.

  7.   펠리페

    파이썬으로 프로그래밍하려면 PyDev 플러그인 또는 Pychar m과 함께 Eclipse를 사용하는 것이 좋습니다.

  8.   루이스

    위에서 언급했듯이 들여 쓰기 때문에 파이썬을 좋아하지 않는 이유입니다. 앞서 살펴본 것처럼 복사 및 붙여 넣기는 작동하지 않으며 C, Java, PHP 등과 같은 다른 언어에서는 발생하지 않습니다.

    가독성은 코드 미화 (예 : http://indentcode.net/ ) 및 준비,

    추악한 것은 수정되었지만 들여 쓰기가없고 논리가 변경되면 소리가납니다 ...

  9.   카를로스

    저는 PyGTK를 처음 사용하는데이 언어로 쉘 스크립트와 상호 작용할 수 있습니까?

    1.    안녕하세요.

      튜토리얼 주셔서 감사합니다.

      인사말.