티스토리 뷰
▶1981년 제록스 가 처음 개발
▶1984년 Apple 의 매킨토시가 개인용으로 GUI 환경의 OS 를 개발, 상용화에 성공함.
▶Unix 시스템에서는 X-Window 라는 GUI 환경을 개발, 발전
▶Apple 의 Mac OS, MS 의 Windows 등을 통해서 발전
▶Tcl/Tk는 GUI 라이브러리
▶Tcl/Tk는 Linux, Mac OS, Unix , Windows 에서 사용이 가능하다.
▶Open Source 로서 많은 Widget 을 지원한다.
▶Tcl/Tk 를 python에서 사용하도록 만든 라이브러리
▶Python 에서 공식적으로 지원하는 GUI 라이브러리
1. Tkinter 기본 구문
▶pack()
1)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름")
lbl.pack()
root.mainloop()
2)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름")
lbl.pack()
txt =Entry(root)
txt.pack()
root.mainloop()
3)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름")
lbl.pack()
txt =Entry(root)
txt.pack()
btn =Button(root, text="ok")
btn.pack()
root.mainloop()
4)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름")
lbl.pack()
txt =Entry(root)
txt.pack()
btn =Button(root, text="ok")
btn.pack(fill=X)
root.mainloop()
5)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름", bg='blue',fg='white')
lbl.pack(fill=X)
txt =Entry(root)
txt.pack()
btn =Button(root, text="ok")
btn.pack(fill=X,padx=10,pady=10)
root.mainloop()
▶grid(row=X, column=Y)
1)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름")
lbl.grid(row=0,column=0)
txt =Entry(root)
txt.grid(row=0,column=1)
btnok =Button(root, text="ok")
btnok.grid(row=1,column=1)
btncancel = Button(root, text="Cancel")
btncancel.grid(row=1,column=2)
root.mainloop()
※ padx : 바깥쪽의 공간을 늘림
ipadx : 안쪽의 공간을 늘림
2)
from tkinter import *
root = Tk()
lbl =Label(root,text="이름")
lbl.grid(row=0,column=0,padx=10)
txt =Entry(root)
txt.grid(row=0,column=1,columnspan=2,padx=10,pady=10)
btnok =Button(root, text="ok")
btnok.grid(row=1,column=1,padx=5,pady=5)
btncancel = Button(root, text="Cancel")
btncancel.grid(row=1,column=2)
root.mainloop()
3)
--> 좀더 이쁜 모양이 만들어짐
from tkinter import *
def okclick():
print("Ok Click")
def cancelClick():
print("Cancel Click")
root = Tk()
lbl =Label(root,text="이름")
lbl.grid(row=0,column=0,padx=10)
txt =Entry(root)
txt.grid(row=0,column=1,columnspan=2,padx=10,pady=10)
btnok =Button(root, text="ok")
btnok.grid(row=1,column=1,ipadx=20, padx=5,pady=5)
btncancel = Button(root, text="Cancel")
btncancel.grid(row=1,column=2,ipadx=10 ,padx=5,pady=5)
root.mainloop()
※ 출력되도록 하는 소스
from tkinter import *
from tkinter import messagebox
def okclick():
print("Ok Click")
name = txt.get()
messagebox.showinfo("이름",name)
def cancelClick():
root.destroy()
root = Tk()
lbl =Label(root,text="이름")
lbl.grid(row=0,column=0,padx=10)
txt =Entry(root)
txt.grid(row=0,column=1,columnspan=2,padx=10,pady=10)
btnok =Button(root, text="ok",command=okclick)
btnok.grid(row=1,column=1,ipadx=20, padx=5,pady=5)
btncancel = Button(root, text="Cancel",command=cancelClick)
btncancel.grid(row=1,column=2,ipadx=10 ,padx=5,pady=5)
root.mainloop()
2. Tkinter bind
→위젯.bind(event명, handler)
Event 명
<Button-1> 마우스 왼쪽 버튼 클릭
<Button-2> 마우스 중간 버튼 클릭
<Button-3> 마우스 오른쪽 버튼 클릭
<Double-Button-1> 왼쪽 버튼 더블클릭
<Return> Enter 키 눌려짐
<Key> 키가 눌려짐
※ key,sym 을 출력함
1)
from tkinter import *
from tkinter import messagebox
def okclick():
print("Ok Click")
name = txt.get()
messagebox.showinfo("이름",name)
def keyPressed(event):
print("Key:" , event.char," Sym:", event.keysym)
def cancelClick():
root.destroy()
root = Tk()
lbl =Label(root,text="이름")
lbl.grid(row=0,column=0,padx=10)
txt = Entry(root)
txt.grid(row=0, column=1, padx = 5, pady = 5 , columnspan=2 )
txt.bind('<Key>', keyPressed)
btnok =Button(root, text="ok",command=okclick)
btnok.grid(row=1,column=1,ipadx=20, padx=5,pady=5)
btncancel = Button(root, text="Cancel",command=cancelClick)
btncancel.grid(row=1,column=2,ipadx=10 ,padx=5,pady=5)
root.mainloop()
2)
from tkinter import *
from tkinter import messagebox
def okclick():
print("Ok Click")
name = txt.get()
messagebox.showinfo("이름",name)
def keyPressed(event):
print("Key:" , event.char," Sym:", event.keysym)
if event.keysym == 'Return':
okclick()
def cancelClick():
root.destroy()
root = Tk()
lbl =Label(root,text="이름")
lbl.grid(row=0,column=0,padx=10)
txt = Entry(root)
txt.grid(row=0, column=1, padx = 5, pady = 5 , columnspan=2 )
txt.bind('<Key>', keyPressed)
btnok =Button(root, text="ok",command=okclick)
btnok.grid(row=1,column=1,ipadx=20, padx=5,pady=5)
btncancel = Button(root, text="Cancel",command=cancelClick)
btncancel.grid(row=1,column=2,ipadx=10 ,padx=5,pady=5)
root.mainloop()
3. 그림그리는 작업
1)직선그리기
from tkinter import *
master = Tk()
canvas_width=80
canvas_height=40
w= Canvas(master, width = canvas_width,height=canvas_height)
w.pack()
y=int(canvas_height/2)
w.create_line(0,y,canvas_width,y,fill='blue')
master.mainloop()
2) 타원그리기
from tkinter import *
master =Tk()
canvas_width=200
canvas_height=200
w= Canvas(master, width = canvas_width,height=canvas_height)
w.pack()
y=int(canvas_height/2)
w.create_line(0,0,100,40,fill='blue')
w.create_oval(10,10,180,130)
master.mainloop()
3) 마우스로 그림그리기
from tkinter import *
canvas_width=200
canvas_height=200
def paint(event):
python_green="#476042"
x1,y1=(event.x-1),(event.y-1)
x2,y2=(event.x+1),(event.y+1)
w.create_oval(x1,y1,x2,y2,fill=python_green)
master =Tk()
master.title("Painting")
w= Canvas(master, width = canvas_width,height=canvas_height)
w.pack(expand=YES,fill=BOTH)
w.bind('<B1-Motion>',paint)
master.mainloop()
4. Tkinter Dialog
1) 기본적인 창
from tkinter import *
from tkinter.messagebox import *
def answer():
showerror("Answer","Sorry")
def callback():
if askyesno("Verify","Really Quit?"):
showwarning("Yes","Not yet")
else :
showinfo("No","Quit")
master =Tk()
master.title("Painting")
Button(text="Quit",command=callback).pack(fill=X)
Button(text="Answer",command=answer).pack(fill=X)
master.mainloop()
Quit 선택
'예'선택
Answer 선택
2) 파일 선택이 다양한 Dialog
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import askopenfilename
def answer():
showerror("Answer","Sorry")
def callback():
if askyesno("Verify","Really Quit?"):
showwarning("Yes","Not yet")
else :
showinfo("No","Quit")
def fileOpen():
name= askopenfilename()
print (name)
master =Tk()
master.title("Painting")
Button(text="Quit",command=callback).pack(fill=X)
Button(text="Answer",command=answer).pack(fill=X)
Button(text="File Open", command=fileOpen).pack(fill=X)
master.mainloop()
File Open 선택
3) 칼라 선택 Dialog
from tkinter import *
from tkinter.colorchooser import askcolor
def callback():
result = askcolor(color="#6A9662",
title = "Bernd's Colour Chooser")
print(result)
root = Tk()
Button(root,
text='Choose Color',
fg="darkgreen",
command=callback).pack(side=LEFT, padx=10)
Button(text='Quit',
command=root.quit,
fg="red").pack(side=LEFT, padx=10)
mainloop()
5. 위젯 참고
참고
수업 ppt 내용
'Programing > Python' 카테고리의 다른 글
Python - 15. 내장함수 (0) | 2017.04.04 |
---|---|
Python - 14. 예외처리 (0) | 2017.03.30 |
Python - 13. 파일처리 (0) | 2017.03.30 |
Python - 12. Module.Package (0) | 2017.03.30 |
Python - 11. class 활용 (0) | 2017.03.28 |