반응형
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' 카테고리의 다른 글
파이썬 tkinter 변수값 가져오기(StringVar, IntVar, DoubleVar, BooleanVar) - 예제로 이해하기 (0) | 2021.09.12 |
---|---|
(Python, tkinter) jpg, png, jpeg 이미지 파일 업로드 하기 (1) | 2021.09.09 |
Python tkinter Canvas 함수 및 옵션 예제로 이해하기 (0) | 2021.09.08 |
(파이썬) 새 윈도우창 만들기, 클릭 시 특정 함수 실행하기 예제 (tkinter) (1) | 2021.09.03 |
파이썬 윈도우창 투명(흐리)하게 조절하는 슬라이드바 만들기 (tkinter) (2) | 2021.09.02 |