파이썬(Python)/tkinter

(파이썬) 키보드 입력으로 도형 생성, 움직이는 그림 예제 (canvas, tkinter)

끄적끄적아무거나 2021. 9. 5. 14:21
반응형

Python - 키보드 event 값 받아서 도형 만들고 키보드 방향키로 도형 움직여 보기


이번 예제는 제목과 같이 tkinter의 canvas 기능을 사용해서 도형을 만들고, 방향키 입력에 맞춰 해당 도형이 움직이는 코드를 작성할 것이다. 예제의 기능은 아래와 같다.

  • 키보드 "o" 클릭 시 원 생성
  • 키보드 "l" 클릭 시 라인 생성
  • 키보드 "s" 클릭 시 사각형 생성
  • 방향키 →←↑↓ 클릭 시 방향에 맞춰서 도형 이동

 

참고로 파이썬 tkinter canvas 함수들의 기능 및 옵션에 대한 설명은 https://scribblinganything.tistory.com/283 를 참조하길 바란다.


결과 화면 - s 클릭>>


결과 화면 - l 클릭>>


결과 화면 - o 클릭>>


결과화면 - 왼쪽으로 여러번 방향이동>>



코드>>

from tkinter import * 
app = Tk() 
width = 600 
height = 400 
pos_x = width/2 
pos_y = height/2 
canvas = Canvas(app, width=width, height=height, bg="white") 
canvas.pack(padx=10, pady=10) 

def making_shape(event): 
	global shapes 
    if event.char == "o": 
    	canvas.delete("all") 
        shapes = canvas.create_oval(width/2, height/2, pos_x+30, pos_y+30, fill="black") 
	elif event.char == "l": 
    	canvas.delete("all") 
        shapes = canvas.create_line(width/2, height/2, pos_x+30, pos_y+30, fill="black") 
	elif event.char == "s": 
    	canvas.delete("all") 
        shapes = canvas.create_polygon(width/2, height/2, pos_x+15, height/2, pos_x+15, pos_y+15, width/2, pos_y+15, fill="black") 
        
def move_up(event): 
	pos_x = 0 
    pos_y = -10 
    canvas.move(shapes, pos_x, pos_y) 
    
def move_down(event): 
	pos_x = 0 
    pos_y = 10 
    canvas.move(shapes, pos_x, pos_y) 

def move_right(event): 
	pos_x = 10 
    pos_y = 0 
    canvas.move(shapes, pos_x, pos_y) 

def move_left(event): 
	pos_x = -10 
    pos_y = 0 
    canvas.move(shapes, pos_x, pos_y) 
    
app.bind("<Up>", move_up) 
app.bind("<Down>", move_down) 
app.bind("<Right>", move_right) 
app.bind("<Left>", move_left) 
app.bind("<Key>", making_shape) 

app.title('scribblinganything.tistory.com') 
app.geometry("700x450") 

app.mainloop()


주석>>
event 는 event interupt 를 입력으로 받는 것이다. 여기서는 키 입력값을 함수의 입력으로 받고 있다.
create_oval 은 원 또는 타원을 만드는 함수이다.
create_line 은 선을 만드는 함수이다.
create_polygon 은 사각형 포함 다각형을 만드는 함수이다. 포인트 위치를 그리는 다각형 모양에 맞춰 순서대로 입력한다.

 

 

관련글>>

https://scribblinganything.tistory.com/471

 

[Python]tkinter 마우스 클릭 이벤트 시 그림 이동하기(Mouse, event, click, move)

목차 tkinter 마우스 클릭 이벤트 Syntax 파이썬의 tkinter를 사용해서 키보드로 이벤트 발생 시 도형을 만들고 이동하는 예제를 구현해 보았습니다(https://scribblinganything.tistory.com/280). 이번에는 마우..

scribblinganything.tistory.com

 

반응형