본문 바로가기

공부/python

(python) tkinter을 통한 GUI 프로그래밍3 - tkinter를 이용한 그래픽

캔버스 생성

  • 점, 선, 도형들을 그릴 수 있음
  • 캔버스(Canvas) 위젯을 윈도우 위에 생성한 후, 캔버스에 그림을 그림
  • 그래프를 그리거나 그래픽 에디터를 작성할 수 있고, 많은 종류의 커스텀
    위젯을 작성할 수 있음
  • 캔버스 위젯은 tkinter에 포함되어 있다.

캔버스를 생성하려면 아래의 절차가 필요하다.

Canvas() 생성자를 호출한 뒤, 윈도우 위젯과 캔버스의 가로와 세로 길이를 

전달한다. 캔버스가 생성되면 pack()을 호출해서 화면에 나타나게 한다.

 

선과 사각형 그리기

그림을 그리기 위해서는 좌표계가 있어야 한다.

수학에서는 직교 좌표계(흔히 중고등과정에서 배우는 그 좌표계)를 사용하지만,

그래픽에서는 왼쪽 상단이 (0, 0)이 되는 좌표계를 사용한다.

 

아래의 직선과 사각형을 그리는 예를 보자.

폭 300픽셀, 높이 200픽셀의 캔버스를 생성했다.

화면 왼쪽 상단을 기준으로 좌상단 (50,25) 우상단(200,100)의 직사각형을 만들고,

푸른색으로 설정했다.

(0,0)에서 (300,200)까지 직선을 그렸다.

(0,0)에서 (300,100)까지 직선을 그리고, 빨강색으로 설정했다.

 

creat_rectangle, creat_line로 매개 변수인 좌표가 전달된다. 매개 변수 fill

통해 채우기 색상을 바꿀 수 있다.

 

캔버스 위젯에 추가된 항목들은 삭제하기 전까지 계속 유지된다.

 

그리기 속성을 사용하고 싶으면 coords(), itemconfig(), move()를 사용할 수 있다.

각각 객체 좌표(coordinates), 객체 속성, 객체 이동을 가리킨다.

 

필요없을 때는 delete()를 이용하여 삭제하면 된다.

캔버스에 필요 없는 그리기 항목이 많으면 느려지므로, 필요 없는 경우 삭제하면 된다.

 

아래의 간단한 예를 보자.

outline은 경계선의 색상을 지정하는 매개 변수이다.

 

색상 대화상자 호출

색을 지정할 때, 영어로 색상을 지정해도 되지만, RGB 16진수 값으로도 색상

지정이 가능하다. 이 외에도, Moccasin(FF24B5), PeachPuff(FFDAB9)과 같은

색상 이름도 가능하다.

 

아래의 예를 보자.

 

아래의 대화상자를 이용한 색상 지정 예시다.

tkinter.colorchooser 모듈의 askcolor() 호출하여 대화 상자를 통해 특정 색상을

지정할 수 있다.

 

타원 그리기

타원(oval)은 지정된 좌상단과 우하단의 좌표의 사각형 안에 그려진다.

 

아래의 예를 보자.

 

호 그리기

호(arc)는 원의 일부이다. 타원처럼 사각형을 지정해서 그리지만,

매개 변수 extent를 사용하여 각도를 지정한다.

 

아래의 예를 보자.

8번째 코드에 style=ARC를 빼면 아래와 같은 결과가 나온다.

 

다각형 그리기

다각형(polygon)은 3개 이상의 선분이루어진 도형이다.

다각형을 이용하면 불규칙적인 형상의 도형을 그릴 수 있다.

 

tkinter로 다각형을 그리려면 다각형의 각 점에 대한 좌표를 입력하면 된다.

아래의 예를 보자.

다각형의 좌표를 지정할 때, 리스트를 사용할 수 있다.

아래의 예를 보자.

 

 

텍스트 그리기

tkinter의 create_text() 함수를 이용하여 캔버스 위에 텍스트도 표시할 수 있다.

텍스트의 중앙 위치를 나타내는 (x, y)좌표와 표시할 텍스트가 전달되는 매개 변수

text를 가진다.

텍스트의 색상을 표시하는 fill 매개 변수, 폰트를 나타내는 매개 변수 font

사용할 수 있다. 매개 변수 fontfont=('Consolas', 20)이라고 하면 20포인트인

Consolas 폰트를 나타낸다.

 

이미지 그리기

tkinter에서 이미지를 표시하려면 이미지를 로드한 다음, create_image() 함수를

이용하면 된다. 기본적으로 tkinter가 읽을 수 있는 이미지 파일은 PNG와 JPG 뿐이다.

다른 형식의 이미지 파일을 읽고 싶으면 Python Imaging Library

(http://www.pythonware.com/products/pil/)를 사용해야 한다.

 

D드라이브의 starship.png 이미지 파일을 읽어서 캔버스에 표시하는 예제를 보자.

D드라이브의 starship.png 이미지 파일은 PhotoImage()에 의하여 읽혀져서

img 변수에 저장된 후, create_image() 함수가 이미지를 화면에 표시한다.

anchor=NW는 이미지의 왼쪽 상단을 기준점으로 사용하란 의미이다.