YongWook's Notes

<파이썬> TKinter - GUI 만들기 본문

-software/python

<파이썬> TKinter - GUI 만들기

글로벌한량 2016. 4. 25. 10:17
예제 보러가기

Tkinter는 파이썬에 내장되어있는 GUI만들기 패키지이다. 잘 사용하면 기본적인 프로그램 만드는데 잘 써먹을 수 있을 것 같다.


http://wiki.tcl.tk/37701 - 색깔


  1. 기본형식
    import Tkinter
    
    root = Tkinter.Tk() #TKinter가 좌지우지할 processor를 만듦
    root.config(width=800, height=600, bg="gray")
    
    # label / entry pair
    l1 = Tkinter.Label(root, text="First Name:")
    e1 = Tkinter.Entry(root)
    
    # put in first row
    l1.grid(row=0, column=0) #grid는 입력창의 크기를 알아서 조정해준다.
    e1.grid(row=0, column=1)
    
    # label / entry pair
    l2 = Tkinter.Label(root, text="Last Name:")
    e2 = Tkinter.Entry(root)
    
    # put in second row
    l2.grid(row=1, column=0)
    e2.grid(row=1, column=1)
    
    # label / entry /button tripple
    l3 = Tkinter.Label(root, text="Age:",bg="light gray")
    e3 = Tkinter.Entry(root,bg="dark slate gray")
    b3 = Tkinter.Button(root, text="submit", bg = "slate gray") #button 만들기. 
                                                          #text와 background color 지정
    
    # put in third row
    l3.grid(row=2, column=0)
    e3.grid(row=2, column=1)
    b3.grid(row=3, column=1)
    
    root.mainloop() #프로그램의 다른 동작이 진행될 때 까지 기다린다.
    
    
    
  2. component 위치설정
    import Tkinter
    
    root = Tkinter.Tk()
    root.title(u'두번째 예제')
    root.config(width=400, height=300, bg="gray")   #root의 크기를 지정한다
    
    b1= Tkinter.Button(root, text="top-left", bg = "dark gray", relief=RIDGE, width=10)
    b2= Tkinter.Button(root, text="top-right", bg="dark gray", relief=RAISED, width=15)
    b3= Tkinter.Button(root, text="bottom-left")
    b4= Tkinter.Button(root, text="bottom-right")
    b5= Tkinter.Button(root, text="center")
    
    b1.place(relx=.0,rely=0)    # margin(여백)을 두고 위치된다.
    b2.place(relx=.2,rely=.0)   # printf에서 %2x 의 쓰임과 유사
    b3.place(relx=.0,rely=.2)
    b4.place(relx=.2,rely=.2)
    b5.place(relx=.1,rely=.1)
    
    root.mainloop() #프로그램의 다른 동작이 진행될 때 까지 기다린다.
    
  3. RadioButton
    http://www.tutorialspoint.com/python/tk_radiobutton.htm
    from Tkinter import *
    
    root = Tk()
    #option을 다른 파일을 read하는 것으로 지정할 수 있다.
    root.option_readfile('optionDB')
    root.title('세번째 예제 - radio_button')
    
    fruit=[('bugger', 1), ('chicken', 2), ('cola', 3)]
    var = IntVar()
    for menu, value in fruit:
        Radiobutton(root, text=menu, value=value, variable=var).pack(anchor=W)
    var.set(3) # value가 3인 controller를 set해준다.
    root.mainloop()
    

  4. 데이터 콘솔로 보내기
    from Tkinter import *
    
    master = Tk()
    master.geometry("300x400+300+300")
    Label (master, text = "name").grid(row=0)
    Label (master, text = "student number").grid(row=1)
    
    name = Entry(master)
    name.insert(10, "name")
    name.grid(row=0, column=1)
    name.focus_set()
    
    studentNumber = Entry(master)
    studentNumber.insert(10,   "20xxxxxxx")
    studentNumber.grid(row=1, column=1)
    
    
    affiliation =u"선택되지 않음"
    def sel():
        global affiliation
        affiliation = var.get()
    
    var = StringVar()
    var.set(1)
    R1=Radiobutton(master, text=u"컴퓨터공학전공",variable=var, value=u"컴퓨터공학전공", command=sel)
    R2=Radiobutton(master, text=u"전기공학전공",variable=var, value=u"전기공학전공", command=sel)
    R3=Radiobutton(master, text=u"타학과(부전공)",variable=var, value=u"타학과(부전공)", command=sel)
    R1.grid(row=2)
    R2.grid(row=3)
    R3.grid(row=4)
    
    def callback():
        print name.get()
        print studentNumber.get()
        print affiliation
    
    Label (master, text = u"전달할 메세지").grid(row=5)
    msg = Entry(master)
    msg.grid(row=5, column = 1)
    
    mybutton = Button(master, text=u"제출", width=10, command=callback)
    mybutton.grid(row=6)
    
    mainloop()
    
  5. 기타등등
    root = Tk()
    root.geometry("600x800+100+100")
    # root의 GUI창이 생성되는 위치 지정. (크기+x좌표+y좌표)
    
    popup =Toplevel(root)
    # root위에 다른 창을 띄우고 싶을 때는 Tk()를 한번 더 쓰면 안되고 Toplevel()을 쓴다.
    
    Radiobutton(popup, text="라디오버튼", variable=self.var, value=i, 
                          indicatoron=0, relief=RAISED, command=self.selected).pack(fill=X)
    # http://www.tutorialspoint.com/python/tk_radiobutton.htm <<- radio버튼 설명. 
    # indicatoron =0 은 라디오버튼에 있는 동그란 체크박스를 숨겨준다.
    # relief는 해당 element 전체의 모양타입을 정해줄 수 있음
    
    
    
  6. GUI 예제 - 예제 보러가기


Comments