본문 바로가기
프로그래밍언어/Python

[ Python] : 그림판 프로그램

by 오주현 2021. 11. 10.
반응형
마우스로 그림을 그릴 수 있는 그림판 프로그램
from tkinter.colorchooser import *
from tkinter.simpledialog import *

#함수 선언 부분
def mouseClick(event) :
    global x1, y1, x2, y2
    x1 = event.x
    y1 = event.y
def mouseDrop(event) :
    global x1, y1, x2, y2, penWidth, penColor
    x2 = event.x
    y2 = event.y
    canvas.create_line(x1, y1, x2 ,y2, width = penWidth, fill = penColor)
def getColor() :
    global penColor
    color = askcolor()
    penColor = color[1]
def getWidth() :
    global penWidth
    penWidth = askinteger("선 두꼐", "선 두께(1~10)를 입력하세요.",
                          minvalue = 1, maxvalue = 10)

#전역 변수 선언 부분
window = None
canvas = None
x1, x2 ,y1, y2 = None, None, None, None  #선의 시작점과 끝점
penColor = 'black'
penWidth = 5

#메인 코드 부분
if __name__ == "__main__" :
    window = Tk()
    window.title("그림판 비슷한 프로그램")
    canvas = Canvas(window, height = 300, width = 300)
    canvas.bind("<Button -1>", mouseClick)
    canvas.bind("<ButtonRelease-1>", mouseDrop)
    canvas.pack()
    mainMenu = Menu(window)
    window.config(menu = mainMenu)
    fileMenu = Menu(mainMenu)
    mainMenu.add_cascade(label = "설정", menu = fileMenu)
    fileMenu.add_command(label = "선 색상 선택", command = getColor)
    fileMenu.add_separator()
    fileMenu.add_command(label = "선 두께 설정", command = getWidth)

    window.mainloop()

마우스를 클릭하는 순간에 시작점 전역 변수 x1, y1의 값을 설정하고

마우스를 드롭하는 순간 끝점 전역 변수 x2, y2의 값을 설정합니다.

 

선 색상을 선택하도록 코딩해주고 두께도 1~10의 값을 선택할 수 있도록 코딩해 줍니다.

 

왼쪽 마우스 버튼을 클릭하면 클릭 함수가 실행되고 드롭하면 드롭 함수가 실행되도록 설정해 줍니다.

 

메뉴도 설정해 주고 getColor()와 getWidth() 함수가 실행되도록 설정합니다.

프로그램을 실행하고 설정 버튼을 눌러줍니다.

 

선 색상과 두께를 설정할 수 있습니다.

 

먼저 선 색을 정해줍니다.

 

선 두께도 정해줍니다.

 

마우스를 드래그해서 그림을 그릴 수 있습니다.

반응형

댓글