파이썬 (pythoon)

Python Tkinter Canvas 사용법 및 예제

working for you 2023. 5. 22. 09:10
반응형

Tkinter를 사용하면 다양한 위젯을 만들 수 있고, 이 중 캔버스는 그래픽을 그릴 수 있는 영역을 제공합니다. 캔버스는 그림판과 유사한 기능을 가지고 있어서 그림 그리기, 다이어그램 만들기, 게임 개발 등 다양한 용도로 활용됩니다. 이번 글에서는 Python Tkinter 사용법 및 예제에 대해 알아보겠습니다.

 

[목차]
1. Python Tkinter Canvas 만들기
2. Python Tkinter Canvas 그래픽 그리기
3. Python Tkinter Canvas 이벤트
4. Python Tkinter Canvas 색상 프로그램
5. Python Tkinter Canvas 선 프로그램

 

1. Python Tkinter Canvas 만들기

Python Tkinter에서 캔버스를 만들려면 Canvas 위젯을 사용합니다. Canvas 위젯은 영역 내에 그림을 그릴 수 있는 틀을 제공합니다. 다음은 캔버스를 생성하는 코드입니다.

1
2
3
4
5
6
7
8
from tkinter import *
 
root = Tk()
 
canvas = Canvas(root, width=500, height=500)
canvas.pack()
 
root.mainloop()
cs

[실행화면]

Canvas 위젯을 생성하고, pack 메소드를 사용해 윈도우에 캔버스를 추가합니다. 이제 실행하면 크기가 500x500인 빈 캔버스가 생성됩니다.

 

 

2. Python Tkinter Canvas 그래픽 그리기

캔버스를 만들었으면 그래픽을 그릴 수 있습니다. create_line, create_rectangle, create_oval 등 다양한 메소드를 사용해 그래픽을 그릴 수 있습니다. 다음은 캔버스에 빨간색 선을 그리는 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
from tkinter import *
 
root = Tk()
 
canvas = Canvas(root, width=500, height=500)
canvas.pack()
 
canvas.create_line(0, 0, 500, 500, fill="red")
 
root.mainloop()
 
cs

[실행화면]

create_line 메소드를 사용해 (0, 0)에서 (500, 500)까지 빨간색 선을 그렸습니다.

create_rectangle 메소드를 사용하면 직사각형을 그릴 수 있고, create_oval 메소드를 사용하면 타원을 그릴 수 있습니다. 그 외에도 캔버스 위젯은 다양한 그래픽 요소를 그릴 수 있습니다.

 

 

3. Python Tkinter Canvas 이벤트

캔버스 위젯은 이벤트 처리를 할 수 있습니다. bind 메소드를 사용해 캔버스에서 발생한 이벤트에 대한 콜백 함수를 등록할 수 있습니다. 예를 들어, 캔버스 위에 마우스를 올리면 배경색이 바뀌는 예제 코드를 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from tkinter import *
 
def on_enter(event):
canvas.configure(bg="yellow")
 
def on_leave(event):
canvas.configure(bg="white")
 
root = Tk()
 
canvas = Canvas(root, width=500, height=500)
canvas.pack()
 
canvas.bind("<Enter>", on_enter)
canvas.bind("<Leave>", on_leave)
 
root.mainloop()
 
 
cs

[실행화면]

bind 메소드를 사용해 캔버스 위에 마우스가 올라갈 때와 내려갈 때 각각 on_enter 함수와 on_leave 함수가 호출됩니다. 이 함수들은 캔버스의 배경색을 변경합니다.

 

4. Python Tkinter Canvas 색상 프로그램

캔버스, 여러 이벤트 및 색상 변경 기능이 있는 Python Tkinter 응용 프로그램을 만들려면 다음 코드를 예로 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import tkinter as tk
 
def change_color(event):
canvas.itemconfig(rectangle, fill="red")
 
def draw_rectangle(event):
x1, y1 = event.x - 50, event.y - 50
x2, y2 = event.x + 50, event.y + 50
canvas.create_rectangle(x1, y1, x2, y2, fill="blue")
 
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
 
canvas.bind("<Button-1>", draw_rectangle)
canvas.bind("<Button-3>", change_color)
 
rectangle = canvas.create_rectangle(0, 0, 0, 0, fill="blue")
 
root.mainloop()
 
cs

[실행화면]

Tkinter 창과 그 안에 캔버스 위젯을 만듭니다. 캔버스에서 마우스 오른쪽 버튼(Button-3)을 클릭하면 change_color 함수가 호출됩니다. itemconfig 메서드를 사용하여 사각형의 색상을 빨간색으로 변경합니다.

캔버스에서 왼쪽 마우스 버튼(Button-1)을 클릭하면 draw_rectangle 함수가 호출됩니다. 마우스 클릭 위치를 기준으로 사각형의 좌표를 계산하고 create_rectangle 메서드를 사용하여 사각형 모양을 생성합니다. 기본적으로 사각형은 파란색으로 채워져 있습니다. 마지막으로 create_rectangle 메서드를 사용하여 캔버스에 초기 사각형 모양을 만들고 rectangle 변수에 ID를 저장합니다.

캔버스를 마우스 왼쪽 버튼으로 클릭하면 클릭한 위치에 파란색 사각형이 그려집니다. 캔버스를 마우스 오른쪽 버튼으로 클릭하면 사각형의 색상이 빨간색으로 변경됩니다.

 

 

5. Python Tkinter Canvas 선 프로그램

다음은 캔버스를 만들고 마우스를 클릭하고 드래그하여 캔버스에 선을 그릴 수 있는 Python Tkinter 프로그램의 예입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import tkinter as tk
 
def start_drawing(event):
canvas.delete("line")
canvas.data["start_x"] = event.x
canvas.data["start_y"] = event.y
 
def draw_line(event):
canvas.create_line(canvas.data["start_x"], canvas.data["start_y"], event.x, event.y, tags="line")
 
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
 
canvas.data = {} # Dictionary to store temporary data
 
canvas.bind("<Button-1>", start_drawing)
canvas.bind("<B1-Motion>", draw_line)
 
root.mainloop()
 
cs

[실행화면]

Tkinter 창과 그 안에 캔버스 위젯을 만듭니다. 캔버스에서 마우스 왼쪽 버튼을 클릭하고 드래그하면 시작점에서 현재 마우스 위치까지 선이 그려집니다. 마우스 왼쪽 버튼(Button-1)을 눌렀을 때 start_drawing 함수가 호출됩니다. 시작 좌표(x, y)를 canvas.data 사전에 저장합니다.

draw_line 함수는 마우스 왼쪽 버튼을 드래그할 때 호출됩니다(B1-Motion). 시작 좌표와 현재 마우스 위치를 사용하여 캔버스에 선을 만듭니다. 마지막으로 <Button-1> 이벤트를 start_drawing 함수에 바인딩하고 <B1-Motion> 이벤트를 draw_line 함수에 바인딩합니다.

이 프로그램을 실행하면 캔버스가 있는 창이 표시됩니다. 캔버스에서 마우스 왼쪽 버튼을 클릭하고 드래그하여 선을 그립니다.

 

 

[관련글]

 

python tkinter photoimage 사진 이미지 넣는 방법

파이썬 GUI 프로그램 개발시 사진을 적용하기 위해서는 PIL 라이브러리에 ImageTK를 활용하면 됩니다. python tkinter photoimage 사진 넣는 방법 및 옵션, 그리고 여러개 사진 넣는 예제까지 같이 공부해

2toy.net

 

챗GPT 란? (CHAT GPT 사용)

챗GPT 란 무엇일까요? 요즘 너무 핫하다 못해 마치 옆에 있는 선생님처럼 느껴지는 이 인공지능 AI에 대해서 이해하기 쉽게 정리하려 합니다. 결론적으로 챗GPT에게 질문을 하면, 형식적인 답이 아

2toy.net

 

파이썬 독학 과연 가능할까?

많은 프로그래밍 언어 중 파이썬은 정말 매력적이라고 생각합니다. 저도 처음 파이썬 독학, 공부를 시작할때 너무 설레였던거 같습니다. 막연히 매크로를 사용해서 업무를 편하게 하고 싶다는

2toy.net

반응형