본문 바로가기
2013.04.06 10:32

GUI 기본

조회 수 6010 추천 수 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 3875
» GUI 기본 file Hojung 2013.04.06 6010
56 Gmail SMTPx2, POP, IMAP Script Hojung 2013.04.06 3853
55 E-Mail 작성 및 발송 스크립트 Hojung 2013.04.06 4162
54 Interactive IMAP4 Script Hojung 2013.04.06 3521
53 SMTP and POP3 Script Hojung 2013.04.06 2588
52 Interactive POP3 Script file Hojung 2013.04.06 3100
51 Interactive SMTP Script Hojung 2013.04.06 2549
50 FTP Download Script Hojung 2013.04.06 7591
49 SocketServer 모듈을 사용해 TCP Server/Client 작성 Hojung 2013.04.06 5764
48 Network Programming - socket() 모듈을 사용해 UDP Server, client 생성 Hojung 2013.04.06 5594
47 Network Programming - socket() 모듈을 사용해 TCP Server, client 생성 Hojung 2013.04.06 22909
46 brew install python on Mac OS X + pyqt, lxml and spynner Hojung 2013.03.29 5432
45 Regular Expression (search vs match 그리고 Greediness) file Hojung 2013.03.26 2778
44 Regular Expression - Extension Notations (?...) Hojung 2013.03.26 2600
43 Regular Expression (문자열을 RE를 이용 list 리턴) - split() Hojung 2013.03.26 3513
42 Regular Expression (찾기 및 바꾸기) - sub() and subn() Hojung 2013.03.26 2807
41 Regular Expression (찾기) - findall() and finditer() Hojung 2013.03.26 3724
40 Regular Expression (matching vs searching) Hojung 2013.03.23 9228
39 How to install pip, spynner, macports and py-pyqt4 Hojung 2013.03.22 3926
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