1 / 12

Python Essential 세미나

Python Essential 세미나. 2001. 4. 25( 수 ). Gui 프로그래밍 - Tkinter. 발표자 : 박승기. ● Tkinter. Tkinter 모듈 (“ Tkinterface”) 은 Tk GUI toolkit 을 이용하는 표준 파 일썬 인터페이스이다 . Tk 와 Tkinter 는 Linux/Unix , Windows, Macintosh 에서 사용가능 import Tkinter 혹은 from Tkinter from * : 모듈을 사용하기위한 방법

waggoner
Télécharger la présentation

Python Essential 세미나

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Python Essential 세미나 2001. 4. 25(수) Gui 프로그래밍 - Tkinter 발표자 : 박승기

  2. ● Tkinter • 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() 을 호출하는데, 주어진 텍스트에 맞게 크기를 조절하고 그 자 체를 보이게 하는 것이다. Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적

  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 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() Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 [예제 결과]: Hello 버튼실행시 :

  5. ● RADIO button(1) 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 동작 원리 • 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() Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 [예제결과] If >widget1.pack(side=TOP) widget2.pack(side=TOP) widget3.pack(side=TOP)

  8. ● Widget 삽입/채우기 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) 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 menumenu=Menu(root)                         # 최상위 윈도우 위젯.menu를 부모로하는 filemenuroot.config(menu=menu)               # root에게 menu 객체를 알려준다. Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적

  10. ●메뉴바와 단축기(2) Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 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. ● 참고서적 및 사이트 Tkinter 기본 widget생성 Push button Radio button Packer 동작원리 Widget 삽입 메뉴바와 단축기 이벤트와 바인딩 참고서적 • Programming Python 2nd Edition • (Mark Lutz, O’REILLY®) • -http://www.pythonware.com/library/tkinter • /introduction/index.htm • Teach your self Python in 24 hours • (SAMS)

More Related