Python tkinter Canvas (캔버스)

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