Python tkinter 강좌 : 제 15강 - Canvas

Python tkinter Canvas

Python tkinter 강좌 : 제 15강 - Canvas
[ Python-Tkinter ] - 윤대희

Canvas(캔버스)


1

Canvas을 이용하여 , 다각형, 등을 그리기 위한 캔버스을 생성할 수 있습니다.



Canvas 사용


import tkinter

window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(False, False)

canvas=tkinter.Canvas(window, relief="solid", bd=2)

line=canvas.create_line(10, 10, 20, 20, 20, 130, 30, 140, fill="red")
polygon=canvas.create_polygon(50, 50, 170, 170, 100, 170, outline="yellow")
oval=canvas.create_oval(100, 200, 150, 250, fill="blue", width=3)
arc=canvas.create_arc(100, 100, 300, 300, start=0, extent=150, fill='red')

canvas.pack()

window.mainloop()


canvas=tkinter.Canvas(window, relief="solid", bd=2)

line=canvas.create_line(10, 10, 20, 20, 20, 130, 30, 140, fill="red")
polygon=canvas.create_polygon(50, 50, 170, 170, 100, 170, outline="yellow")
oval=canvas.create_oval(100, 200, 150, 250, fill="blue", width=3)
arc=canvas.create_arc(100, 100, 300, 300, start=0, extent=150, fill='red')

canvas.pack()

tkinter. Canvas(윈도우 창, 파라미터1, 파라미터2, 파라미터3, ...)을 사용하여 해당 윈도우 창에 표시할 캔버스의 속성을 설정할 수 있습니다.

파라미터를 사용하여 캔버스의 속성을 설정합니다.

메소드를 이용하여 캔버스에 도형을 그릴 수 있습니다.



Canvas Method


이름 의미 설명
create_line(x1, y1, x2, y2, … , xn, yn, option) (x1, y1), (x2, y2), …, (xn, yn) 까지 연결되는 선 생성
create_line(x1, y1, x2, y2, option) 사각형 (x1, y1)에서 (x2, y2)의 크기를 갖는 사각형 생성
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_arc(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 : 두께

    • fill : 배경 색상

    • anchor : 위치 지정


  • Tip : 이외에도 여러 option이 존재



Entry Parameter


캔버스 형태 설정

이름 의미 기본값 속성
width 캔버스의 너비 378 상수
height 캔버스의 높이 265 상수
relief 캔버스의 테두리 모양 flat flat, groove, raised, ridge, solid, sunken
borderwidth=bd 캔버스의 테두리 두께 0 상수
background=bg 캔버스의 배경 색상 SystemButtonFace color
offset 캔버스의 오프셋 설정 0,0 x, y, n, e, w, s, ne, nw, se, sw



캔버스 형식 설정

이름 의미 기본값 속성
cursor 캔버스의 마우스 커서 모양 - 커서 속성
xscrollcommand 캔버스의 가로스크롤 위젯 적용 - Scrollbar위젯.set
yscrollcommand 캔버스의 세로스크롤 위젯 적용 - Scrollbar위젯.set
xscrollincrement 캔버스 가로스크롤의 증가량 0 상수
yscrollincrement 캔버스 가로스크롤의 증가량 0 상수
scrollregion 캔버스 스크롤 영역 크기 설정 - n, e, w, s
confine 캔버스의 스크롤 영역 내 제한 True Boolean



캔버스 하이라이트 설정

이름 의미 기본값 속성
highlightcolor 캔버스가 선택되었을 때 색상 SystemWindowFrame color
highlightbackground 캔버스가 선택되지 않았을 때 색상 SystemButtonFace color
highlightthickness 캔버스가 선택되었을 때 두께 (두께 설정) 0 상수



캔버스 동작 설정

이름 의미 기본값 속성
takefocus Tab 키를 이용하여 위젯 이동 허용 여부 True Boolean



참고


  • cursor 파라미터

    • arrow, based_arrow_down, based_arrow_up, boat, bogosity, bottom_left_corner, bottom_right_corner, bottom_side, bottom_tee, box_spiral, center_ptr, circle, clock, coffee_mug, cross, cross_reverse, crosshair, diamond_cross, dot, dotbox, double_arrow, draft_large, draft_small, draped_box, exchange, fleur, gobbler, gumby, hand1, hand2, heart, icon, iron_cross, left_ptr, left_side, left_tee, leftbutton, ll_angle, lr_angle, man, middlebutton, mouse, pencil, pirate, plus, question_arrow, right_ptr, right_side, right_tee, rightbutton, rtl_logo, sailboat, sb_down_arrow, sb_h_double_arrow, sb_left_arrow, sb_right_arrow, sb_up_arrow, sb_v_double_arrow, shuttle, sizing, spider, spraycan, star, target, tcross, top_left_arrow, top_left_corner, top_right_corner, top_side, top_tee, trek, ul_angle, umbrella, ur_angle, watch, wait, xterm, X_cursor

  • highlightbackground를 설정하였을 경우, 캔버스가 선택되지 않았을 때에도 두께가 표시됨


Book Image

책이 출간되었습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C# OpenCvSharp4
  • Python OpenCV4
  • Using Tesseract
  • Using TensorFlow
  • Using Regular Expression
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post Python tkinter 강좌 : 제 14강 - Message ⤧  Next post Python tkinter 강좌 : 제 16강 - Scrollbar
    Python-Tkinter Category