본문 바로가기
2013.04.06 10:32

GUI 기본

조회 수 5231 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files
** GUI 프로그램을 위한 5 단계

1. Tkinter 모듈을 import (or from Tkinter import *)
2. GUI app 전체를 포함하는 top-level windowing object를 생성
3. 위의 top-level windowing object위에 또는 안에 기능을 포함하는 GUI component를 생성
4. GUI component를 기본 application 코드에 연결
5. 메인 이벤트루프에 진입


** Windows and Widgets

- top-level root windowing object은 모든 작은 windowing objects를 포함한다.
- 이 작은 windowing object 들을 widget이라 한다
- 위젯 디자인을 마친 후 기능들을 넣는다.


** Label Widget Demo (기본)

#!/usr/bin/env python

import Tkinter

top = Tkinter.Tk() <------- top-level root windowing object 생성
label = Tkinter.Label(top, text='Hello World!') <---- label 위젯생성. 인자로 위 루트 윈도우 객체가 들어감
label.pack() <------- 위젯을 위치시키는 Geometry Manager로 Packer 사용
Tkinter.mainloop() <--------- 메인 이벤트루프에 진입



** Label and Button Widget Demo

#!/usr/bin/env python

import Tkinter
top = Tkinter.Tk()

hello = Tkinter.Label(top, text='Hello World!')
hello.pack()

quit = Tkinter.Button(top, text='QUIT', command=top.quit)
quit.pack(fill=Tkinter.X, expand=1)

Tkinter.mainloop()

---- output -----
02.png


** Label, Button, and Scale Widgets
: Scale 슬라이더로 Label 위젯에 있는 text의 크기를 조절하기

from Tkinter import * <----- 모든 attributes가 네임스페이스로 들어가므로 권장하진 않는다

def resize(ev=None): <----- callback 함수 (scale에서 호출됨. 호출되면 scale값으로 label 크기변경)
    label.config(font='Helvetica -%d bold' % \
        scale.get()) <----- scale 객체의 메소드로 조절한 값을 얻어서 label config

top = Tk()
top.geometry('250x150') <----- to-level 윈도우의 사이즈 지정

label = Label(top, text='Hello World!', font='Helvetica -12 bold')
label.pack(fill=Y, expand=1)

scale = Scale(top, from_=10, to=40,
              orient=HORIZONTAL, command=resize) <--- command 인자가 resize 함수 (변경시 함수호출)
scale.set(12)
scale.pack(fill=X, expand=1)

quit = Button(top, text='QUIT',
              command=top.quit, activeforeground='white',
              activebackground='red')
quit.pack()

mainloop()

----- output ------
03.png


** Intermediate Tkinter Example
: 디렉토리를 입력하고 디렉토리/파일 리스트를 출력하는 GUI

- 최종 예상 GUI의 형태는 아래와 같다
04.png

- top-level windowing ob 만들기
#!/usr/bin/env python

import os
from time import sleep
from Tkinter import *

class DirList(object):
    def __init__(self, initdir=None):
        self.top = Tk()

def main():
    d = DirList(os.curdir)
    mainloop()

if __name__ == '__main__':
    main()


05.png

... 생략

Title
List of Articles
번호 제목 글쓴이 날짜 조회 수
58 Python 2.7 in CentOS with no issue (setuptools, pip, virtualenv) Hojung 2014.08.31 3312
» GUI 기본 file Hojung 2013.04.06 5231
56 Gmail SMTPx2, POP, IMAP Script Hojung 2013.04.06 3313
55 E-Mail 작성 및 발송 스크립트 Hojung 2013.04.06 3613
54 Interactive IMAP4 Script Hojung 2013.04.06 3000
53 SMTP and POP3 Script Hojung 2013.04.06 2144
52 Interactive POP3 Script file Hojung 2013.04.06 2681
51 Interactive SMTP Script Hojung 2013.04.06 2145
50 FTP Download Script Hojung 2013.04.06 6972
49 SocketServer 모듈을 사용해 TCP Server/Client 작성 Hojung 2013.04.06 4720
48 Network Programming - socket() 모듈을 사용해 UDP Server, client 생성 Hojung 2013.04.06 4715
47 Network Programming - socket() 모듈을 사용해 TCP Server, client 생성 Hojung 2013.04.06 14262
46 brew install python on Mac OS X + pyqt, lxml and spynner Hojung 2013.03.29 4904
45 Regular Expression (search vs match 그리고 Greediness) file Hojung 2013.03.26 2360
44 Regular Expression - Extension Notations (?...) Hojung 2013.03.26 2167
43 Regular Expression (문자열을 RE를 이용 list 리턴) - split() Hojung 2013.03.26 3087
42 Regular Expression (찾기 및 바꾸기) - sub() and subn() Hojung 2013.03.26 2409
41 Regular Expression (찾기) - findall() and finditer() Hojung 2013.03.26 3288
40 Regular Expression (matching vs searching) Hojung 2013.03.23 8369
39 How to install pip, spynner, macports and py-pyqt4 Hojung 2013.03.22 3492
Board Pagination ‹ Prev 1 2 3 Next ›
/ 3

Designed by sketchbooks.co.kr / sketchbook5 board skin

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5