Python/Python tkinter

Python tkinter : create_line (선 그리기)

CosmosProject 2022. 5. 19. 19:28
728x90
반응형

 

 

 

Canvas의 create_line은 Canvas 위에 직선을 그려줍니다.

 

 

Syntax

Canvas.create_line(x1, y1, x2, y2, fill=color, width=number)

 

create_line은 2개의 점에 대한 좌표를 받아 그 두 점을 이어주는 형식으로 직선을 그립니다.

 

따라서 점 (x1, y1)과 점 (x2, y2)를 직선으로 이어주죠.

 

fill 옵션은 선의 색상을 설정합니다. black, white, gray 등과 같은 색상 이름 또는 hex color값을 받을 수 있습니다.

 

width 옵션은 선의 두께를 설정합니다.

 

 

 

 

 

Syntax

Canvas.create_line(x1, y1, x2, y2, x3, y3, ..., fill=color, width=number, smooth=bool)

 

create_line method는 위처럼 3개, 4개 또는 그 이상의 점을 전달할 수 있습니다.

그리고 동시에 smooth라는 옵션도 있습니다.

 

smooth=False라면 주어진 점 (x1, y1), (x2, y2), (x3, y3), ...들을 순차적으로 지나는 꺾은선을 그려줍니다.

smooth=True라면 주어진 점 (x1, y1), (x2, y2), (x3, y3), ...들을 순차적으로 지나는 곡선을 그려줍니다.

 

 

 

 

import tkinter as tk

window = tk.Tk()

canvas = tk.Canvas(window, width=500, height=400, background='gray')
canvas.pack(padx=10, pady=10)

canvas.create_line(0, 0, 100, 50, fill='black', width=3)

window.mainloop()

 

 

- canvas.create_line(0, 0, 100, 50, fill='black', width=3)

method를 해석해보면 다음과 같습니다.

 

(0, 0)과 (100, 50)을 이어서 선을 만듭니다.

선의 색은 fill='black'이고,

선의 두께는 width=3입니다.

 

주의할 점은 (0, 0)은 Window의 왼쪽 상단이 아니라 Canvas(회색)의 왼쪽 상단 꼭지점을 의미합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

import tkinter as tk

window = tk.Tk()

canvas = tk.Canvas(window, width=500, height=400, background='gray')
canvas.pack(padx=10, pady=10)

canvas.create_line(0, 0, 60, 10, 100, 50, fill='black', width=3, smooth=False)

window.mainloop()

 

 

 

- canvas.create_line(0, 0, 60, 10, 100, 50, fill='black', width=3, smooth=False)

위 예시를 보면 점이 총 3개 주어졌습니다.

(0, 0)

(60, 10)

(100, 50)

 

따라서 (0, 0)에서 시작하여 (60, 10)을 지나 (100, 50)으로 이어지는 꺾은선을 그려줍니다.

꺾은선을 그려주는 이유는 smooth=False이기 때문입니다.

 

 

 

 

 

 

import tkinter as tk

window = tk.Tk()

canvas = tk.Canvas(window, width=500, height=400, background='gray')
canvas.pack(padx=10, pady=10)

canvas.create_line(0, 0, 60, 10, 100, 50, fill='black', width=3, smooth=True)

window.mainloop()

 

 

- canvas.create_line(0, 0, 60, 10, 100, 50, fill='black', width=3, smooth=True)

이번에는 주어진 점들의 좌표가 동일한 상황에서 smooth=True로 바꿔보았습니다.

 

그랬더니 위 이미지에서처럼 선이 둥글어진 것이 보이시나요?

주어진 점을 지나는 곡선이 그려진 것입니다.

 

 

 

 

 

 

 

 

import tkinter as tk

window = tk.Tk()

canvas = tk.Canvas(window, width=500, height=400, background='gray')
canvas.pack(padx=10, pady=10)

canvas.create_line(0, 0, 100, 50, 60, 10, fill='black', width=3, smooth=True)

window.mainloop()

 

 

- canvas.create_line(0, 0, 100, 50, 60, 10, fill='black', width=3, smooth=True)

또한 create_line method는 주어진 점들을 처음부터 순차적으로 지나는 선을 그리기 때문에

위처럼 주어진 점의 순서를 다르게 하면 그려지는 선도 달라집니다.

 

위 예시는 (0, 0) -> (100, 50) -> (60, 10) 을 순서대로 지나는 선을 그리는 예시입니다.

 

 

 

 

 

 

728x90
반응형