Python tkinter Canvas에 대해 살펴보겠습니다.
Canvas는 선, 원, 도형 등을 그려 출력하는 위젯입니다.
Canvas 만들기
Canvas는 tkinter에 Canvas(window) 함수로 생성합니다.
매개변수로 Canvas가 생성될 window를 넣어줘야 합니다.
생성한 후 pack() 함수로 Canvas를 화면에 배치합니다.
import tkinter
win = tkinter.Tk();
canvas = tkinter.Canvas(win, relief="solid", borderwidth=3);
canvas.pack();
win.mainloop();
이렇게 Canvas를 생성했습니다.
해당 Canvas에 함수들을 사용해 선, 원, 도형 등을 그릴 수 있습니다.
import tkinter
win = tkinter.Tk();
canvas = tkinter.Canvas(win, relief="solid", borderwidth=3);
// 선 그리기
line = canvas.create_line(1,1,10,10, outline="black");
// 다각형 그리기 (5각형)
polygon = canvas.create_polygon(20, 20, 35, 5, 50, 20, 42,40, 27,40, outline="red");
canvas.pack();
win.mainloop();
위 코드를 실행하면 Canvas에 1,1 좌표에서 10,10 좌표로 이어지는 선 하나와, 오각형이 그려집니다.
Canvas의 함수들
이름 | 기능 |
create_line(x1, y1, x2, y2, xn, yn, ..., option) | (x1,y1) - (x2,y2) - (xn,yn) 을 잇는 선 생성 |
create_polygon(x1, y1, x2, y2, xn, yn, ..., option) | (x1,y1) - (x2,y2) - (xn,yn) 을 꼭지점으로 잇는 다각형 생성 |
create_oval(x1, y1, x2, y2, option) | (x1,y1) - (x2,y2) 를 지름으로 갖는 원 생성 |
create_are(x1, y1, x2, y2, start, extent, option) | (x1,y1) - (x2,y2)를 지름으로 갖고 start부터 extent의 각을 지니는 호 생성 |
create_image(x, y, image, option) | (x,y) 위치에 image생성 |
함수에 사용되는 Option들
- fill : 배경 색상
- outline : 두께 색상
- width: 두께
등등..
마지막으로 캔버스위젯의 옵션들을 살펴보면 포스팅을 마무리하겠습니다.
Canvas의 옵션들
1. Canvas의 디자인 관련
이름 | 기능 | 기본값 | 속성 |
width | Canvas의 길이 | 378 | 숫자 |
height | Canvas의 높이 | 265 | 숫자 |
relief | Canvas의 테두리모양 | flat | solid, raised, flat, groove, ridge, sunken |
background | Canvas의 배경색상 | SystemButtonFace | color |
borderwidth | Canvas의 테두리 두께 | 0 | 숫자 |
offset | Canvas의 오프셋 설정 | 0,0 | x, y, n, ne, nw, s, se, sw, w |
cursor | Canvas의 마우스커서 설정 | pointer, arrow등 cursor속성 | |
highlightcolor | Canvas가 선택되었을때 하이라이트 색상 | SystemWindowFrame | color |
highlightbackground | Canvas가 선택되지 않았을때 하이라이트 색상 | SystemButtonFace | color |
highlightthickness | Canvas가 선택되었을때 하이라이트 두께 | 0 | 숫자 |
2. Canvas의 동작 관련
이름 | 기능 | 기본값 | 속성 |
takefocus | Tab키를 이용하여 위젯이동 | True | Boolean |
xscrollcommand | Canvas의 가로스크롤 위젯적용 | Scrollbar위젯.set | |
yscrollcommand | Canvas의 세로스크롤 위젯적용 | Scrollbar위젯.set |