Download presentation
Presentation is loading. Please wait.
Published byErlin Budiman Modified 6년 전
1
(수) Python Essential 세미나 Gui 프로그래밍 - Tkinter 발표자 : 박승기
2
● Tkinter Tkinter 모듈(“ Tkinterface”)은 Tk GUI toolkit을 이용하는 표준 파
기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 Tkinter 모듈(“ Tkinterface”)은 Tk GUI toolkit을 이용하는 표준 파 일썬 인터페이스이다. Tk 와 Tkinter는 Linux/Unix , Windows, Macintosh 에서 사용가능 import Tkinter 혹은 from Tkinter from * : 모듈을 사용하기위한 방법 root=Tk() : Tkinter를 초기화하기 위해서 Tk root위젯을 만들어야 한다. root 위젯은 가장 먼저 만들어져야 하며 각 프로그램에 단 한 개만 존 재할 수 있다. w = Label(root, text="Hello, world!") w.pack() : Label 위젯은 텍스트, 아이콘 혹은 이미지 등을 표시할 수 있다. 텍스트를 출력하기 위해서 text 옵션을 사용한다. 그리곤, pack() 을 호출하는데, 주어진 텍스트에 맞게 크기를 조절하고 그 자 체를 보이게 하는 것이다.
3
● 기본 Widget 생성 Tkinter 기본 widget생성 Push button Radio button
Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 from Tkinter import * root=Tk() root.mainloop() . [소스 설명] root=Tk() : 새로운 widget이 열린다. root.mainloop() : 이 프로그램은 윈도우를 닫을 때 까지 이벤트 루프에 머문다. 이것은 사용자로부터 혹은 윈도우로부터의 이벤트를 처리하는 한다(디스플레이 업데이트를 포함해서). root 윈도우는 pack하지 않아도 자동적으로 디스플레이된다 [예제결과]
4
● PUSH button Tkinter 기본 widget생성 Push button Radio button Packer 동작원리
메뉴바와 단축기 이벤트와 바인딩 참고서적 from Tkinter import * class App: def __init__(self, master): frame = Frame(master) frame.pack() # 프레임이 보이게 한다. self.button = Button(frame, text="QUIT", fg="red", command=frame.quit) self.button.pack(side=LEFT) self.w = Button(frame, text="Hello", command=self.say_hi) self.w.pack() def say_hi(self): print "hi there, everyone!" root = Tk() app = App(root) root.mainloop() [예제 결과 ]: Hello 버튼실행시 :
5
● RADIO button(1) Tkinter 기본 widget생성 Push button Radio button
from Tkinter import * class App: def __init__(self, master): frame = Frame(master) frame.pack() MODES = [("Monochrome", "1"), ("Grayscale", "L"), ("True color", "RGB"), ("Color separation", "CMYK")] # 스트링 변수 생성 self.v = StringVar() self.v.set("L") # 초기값 설정 for text, mode in MODES: # MODES의 터플에 라디오버튼 생성 b = Radiobutton(frame, text=text, variable=self.v, value=mode, command=self.rb) b.pack(anchor=W, fill='x') # fill='x' : 버튼을 x축 끝까지 채워라 self.w = Label(master, text=self.v.get()) self.w.pack() def rb(self): self.w.configure(text=self.v.get()) root = Tk() app = App(root) root.mainloop() Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적
6
● RADIO button(2) Tkinter 기본 widget생성 Push button Radio button [소스설명]
Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 [소스설명] 터플의 리스트를 만든다 (표시할 문자열, 변수 값) MODES = [("Monochrome", "1"), ("Grayscale", "L"), ("True color", "RGB"), ("Color separation", "CMYK")] 먼저 버튼 옆에 표시할 문자열과 그 버튼이 선택되었을 때 변수가 취할 값의 터플의 리스트(MODES)를 만든다. 다음으로는 변수를 생성한다. 이번에는 문자열 변수(v)를 생성하고 버튼이 선택되면 문자열 값이 변수에 저장되도록 한다. 초기 값을 v.set('L') 설정한다. [예제결과] If > b = Radiobutton(indicatoron=0, text=text,variable=self.v, value=mode,command=self.rb)
7
● Packer 동작 원리 Tkinter 기본 widget생성 Push button Radio button
메뉴바와 단축기 이벤트와 바인딩 참고서적 Packer : '짐을 싸다‘ 라는 뜻이 있으므로, 상자의 왼쪽부터 물건을 놓는다고 생각하면 쉬울 것이다. 수평배치 from Tkinter import * root = Tk() widget1 = Button(root, text="Widget1") widget2 = Button(root, text="Widget2") widget3 = Button(root, text="Widget3") widget1.pack(side=LEFT) widget2.pack(side=LEFT) widget3.pack(side=LEFT) root.mainloop() [예제결과] If > widget1.pack(side=TOP) widget2.pack(side=TOP) widget3.pack(side=TOP)
8
● Widget 삽입/채우기 Tkinter 기본 widget생성 Push button Radio button Widget 삽입
어떤 위젯다음에 자신의 위젯을 삽입할 경우 after를 사용 ex) widget1.pack(after=widget) 어떤 위젯앞에 자신의 위젯을 삽입할 경우 before를 사용 ex) widget1.pack(before=widget) Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 Widget 채우기 pack method를 호출할때 fill=X, fill=Y 를 사용하여 각 축을 기준으로 위젯들을 크게하여 맞춘다. [Widget 삽입 예제결과] [Widget 채우기 예제결과]
9
● 메뉴바와 단축기(1) Tkinter 기본 widget생성 Push button Radio button Packer 동작원리
from Tkinter import * def print_msg(msg): w.configure(text=msg) def menu_new(event=None): print_msg("New called") def menu_open(event=None): print_msg("Open called") def menu_about(event=None): print_msg("About called") def menu_exit(event=None): root.quit () root.destroy() root=Tk() #creat menu menu=Menu(root) # 최상위 윈도우 위젯.menu를 부모로하는 filemenu root.config(menu=menu) # root에게 menu 객체를 알려준다. Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적
10
● 메뉴바와 단축기(2) Tkinter 기본 widget생성 Push button Radio button Packer 동작원리
이벤트와 바인딩 참고서적 w=Label(root, text="Hello world!", width=50, height=3) # 초기화면에 띄어질 Label 함수. w.pack() filemenu=Menu(menu) # menu를 부모로 하는 새로운 객체 메뉴 filemenu를 만든다. menu.add_cascade(label="File", menu=filemenu) # menu 객체에 filemenu를 추가한다. filemenu.add_command(label="New",underline=0,accelerator="Ctrl+N",command=menu_new) # 일반메뉴 추가. filemenu.add_command(label="Open",underline=0,accelerator="Ctrl+O",command=menu_open) filemenu.add_separator() #선으로 구분해준다. filemenu.add_command(label="Exit",underline=1,accelerator="Alt+x“,command=menu_exit) helpmenu=Menu(menu) # menu를 부모로 하는 새로운 객체 메뉴 helpmenu를 만든다. menu.add_cascade(label="Help", menu=helpmenu) helpmenu.add_command(label="About", command=menu_about) root.bind("<Control-n>",menu_new) root.bind("<Control-o>",menu_open) root.bind("<Alt-Key-x>",menu_exit) root.mainloop()
11
● Event and Bindings 모든 위젯은 bind 메써드를 이용하여 이벤트를 메써드나 함수에
연결 시킬 수 있다. 만일 event에 해당하는 이벤트가 발생하면 ha ndler가 호출된다. 형식) widget.bind(event.handler) Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 Event의 종류 <Button-1> : 마우스버튼이 위젯 위에서 눌려짐. 1은 왼쪽, 2는 가운데, 3은 오른쪽 버튼이다. <B1-Motion> : 버튼이 1이 눌린상태로 마우스가 움직인다. <Enter> : 마우스 포인터가 위젯 상으로 이동했다. <Leave> : 마우스 포인터가 위젯을 벗어났다. <Shift-Up> : 사용자가 시프트키를 누른 상태에서 위로 화살표 버튼을 누른다. <Configure> : 위젯의 크기가 변했다. 새로운 위젯의 크기는 event객체의 width,height 멤버로 주어진다. Event의 객체 <Widget> : 이벤트를 발생시킨 위젯. 이름이 아닌 Tkinter 위젯 인스턴스이다. <x,y> : 현재 마우스의 위치 <char> : 문자코드 스트링으로 전달 <keysym> : 키 심볼 <keycode> : 키 코드 <width,height>: 위젯의 새로운 크기(픽셀)
12
● 참고서적 및 사이트 Programming Python 2nd Edition (Mark Lutz, O’REILLY®)
Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 Programming Python 2nd Edition (Mark Lutz, O’REILLY®) - /introduction/index.htm Teach your self Python in 24 hours (SAMS)
Similar presentations