| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- gas
- hive
- array
- Google Excel
- Redshift
- Github
- Tkinter
- Kotlin
- c#
- dataframe
- Google Spreadsheet
- GIT
- numpy
- google apps script
- matplotlib
- PostgreSQL
- Excel
- SQL
- 파이썬
- django
- PySpark
- string
- list
- Presto
- PANDAS
- Java
- math
- Python
- Apache
- Today
- Total
달나라 노트
Python tkinter : create_line (선 그리기) 본문
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) 을 순서대로 지나는 선을 그리는 예시입니다.
'Python > Python tkinter' 카테고리의 다른 글
| Python tkinter : create_oval (타원 그리기) (0) | 2022.05.19 |
|---|---|
| Python tkinter : create_rectangle (사각형 그리기) (0) | 2022.05.19 |
| Python tkinter : resizable (윈도우 크기 고정시키기) (0) | 2022.05.19 |
| Python tkinter : Canvas, PhotoImage, create_image (0) | 2022.05.19 |
| Python tkinter : place_info (객체의 위치 정보, 객체의 position, 객체 위치 좌표) (0) | 2022.05.17 |