본문 바로가기

2019년 혁신성장 청년인재 집중양성(빅데이터)/[프로그래밍] 파이썬

2019/08/13 이벤트 핸들러, tkinter를 이용한 객체 다루기

1. onscreenclick(), onkeypress()는 사건처리 함수, 이벤트 핸들러라고 한다. 

 

 

2. tkinter 를 이용하여 창을 구성한다.

 

from tkinter import*

window = Tk()

def p1():
    c = (float(e1.get())-32)/1.8
    e2.insert(5, str(c))
    print(c)
    return c

def p2():
    f = (float(e2.get())*1.8)-32
    e1.insert(5, str(f))
    print(f)
    return f

l1 = Label(window, text ="화씨")
l2 = Label(window, text ="섭씨")
l1.pack()
l2.pack()


e1 = Entry(window)
e2 = Entry(window)
e1.pack()
e2.pack()

b1 = Button(window, text ="화씨->섭씨", command =p1)
b2 = Button(window, text ="섭씨->화씨", command=p2)
b1.pack()
b2.pack()

window.mainloop()

 

3.

 

 

from tkinter import*

mycolor = "blue"
n = 1
def paint(event):
    global n
    n+=1
    x1, y1 = ( event.x- n), (event.y+n)
    x2, y2 = ( event.x+ n), (event.y-n)
    canvas.create_oval(x1, y1, x2, y2, fill = mycolor)
# 두 개으 좌표를 이용한 타원/원 만들기


window =Tk()
canvas = Canvas(window)
canvas.pack()

canvas.bind("<Button-1>", paint)
canvas.bind("<Button-3>", paint)
window.mainloop()

 

4. 완벽한 그림판을 만들기 위해서는 클릭과 모션을 구분해서 받을 필요가 있다. 그렇기 때문에 함수 두 가지를 만들어서 처리해줄 수 있다.

from tkinter import*

mycolor = "black"
n = 1
def paint(event):
    global n
    n+=1
    x1, y1 = ( event.x- n), (event.y-n)
    x2, y2 = ( event.x+ n), (event.y+n)
    canvas.create_oval(x1, y1, x2, y2, fill = mycolor)

def mouseMove(event):
    global x1, y1
    x1, y1 = ( event.x- 1), (event.y-1)
    canvas.create_line(x1,y1, event.x, event.y, width=1, fill="red")

def red():
    global mycolor
    mycolor = "red"

def blue():
    global mycolor
    mycolor = "blue"

window =Tk()
canvas = Canvas(window, width=1000, height=1000)
red = Button(window, text="빨간색", command = red)
blue = Button(window, text="파란색", command = blue)
red.pack()
blue.pack()

canvas.pack()
canvas.bind("<B1-Motion>", mouseMove)
canvas.bind("<Button-1>", paint)

 

 

4. 졸았다.