【Python】Tkinter의 캔버스를 사용해보기

소개



Python이라는 언어에는 기본적으로 인터페이스를 만드는 툴킷 Tkinter가 있습니다.
이 Tkinter는 간단한 GUI를 낭비하게 플러그인을 추가하지 않고 작성할 수 있으므로 편리합니다만, 좀처럼 해설 사이트가 없습니다.
그래서, 내가 필요하게 해서 조사해 주신 부분을 정리해 나가려고 합니다.

Tkinter 소개



Python의 Tkinter를 사용해보십시오. 그리고 기초는 써 보았으므로, 흥미가 있으면 부디.
읽지 않아도 작성할 수 있도록 써 갑니다.

Tkinter를 사용해보기



간단하게 Tkinter의 사용법을.
자세한 것은 스스로 조사해 주시는지, 「 Python의 Tkinter를 사용해보십시오. 」를 읽어 주세요.

파이썬
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter

#
# GUI設定
#
root = Tkinter.Tk()
root.title(u"TkinterのCanvasを使ってみる")
root.geometry("800x450")   #ウインドウサイズ(「幅x高さ」で指定)



#
# GUIの末端
#
root.mainloop()

Tkinter의 Canvas를 사용해보십시오.



본편은 여기에서됩니다.
기본 코피페로 움직이도록(듯이) 써서 몇 가지 생각입니다만, Tkinter의 기본에 대해서는 그다지 만지지 않으므로 양해 바랍니다.
자세한 내용은 직접 확인하거나 "Python의 Tkinter를 사용해보십시오."을 읽으십시오.

Canvas 정의



Canvas는 Tkinter의 다른 객체 (버튼, 항목 등)와 마찬가지로 GUI 처리에 씁니다.
실제 샘플을 참조하십시오.

파이썬
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter

#
# GUI設定
#
root = Tkinter.Tk()
root.title(u"TkinterのCanvasを使ってみる")
root.geometry("800x450")

#キャンバスエリア
canvas = Tkinter.Canvas(root, width = 800, height = 450)

#キャンバスバインド
canvas.place(x=0, y=0)


#
# GUIの末端
#
root.mainloop()

이제 800px * 450px의 Canvas가 생성되어 (x, y) = (0,0)에 배치되었습니다.

내용으로서,canvas = Tkinter.Canvas(root, width = 800, height = 450)이 과정에서 Canvas가 생성되고,canvas.place(x=0, y=0)이 프로세스는 화면에 Canvas를 배치합니다.

이것만으로는 이해하기 어렵기 때문에,canvas.create_rectangle(0, 0, 800, 450, fill = 'green', stipple = 'gray25')넣어 보겠습니다.

파이썬
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter

#
# GUI設定
#
root = Tkinter.Tk()
root.title(u"TkinterのCanvasを使ってみる")
root.geometry("800x450")

#キャンバスエリア
canvas = Tkinter.Canvas(root, width = 800, height = 450)#Canvasの作成
canvas.create_rectangle(0, 0, 800, 450, fill = 'green')#塗りつぶし

#キャンバスバインド
canvas.place(x=0, y=0)#Canvasの配置


#
# GUIの末端
#
root.mainloop()

위의 샘플을 실행하면 800px * 450px 크기의 창이 만들어지고 화면 가득 녹색 사각형이 표시된다고 생각합니다.


추가한 것은canvas.create_rectangle(0, 0, 800, 450, fill = 'green')한 줄에서 Canvas의 지정된 부분을 특정 색상으로 채 웁니다.

따라서 작성한 Canvas는 작성 포인트와 바인드 포인트 사이에 처리를 작성합니다.

Canvas로 그릴 수 있는 것



즐거움 Python/Tkinter 입문 와 같이 상세가 기재되고 있습니다만, 이쪽에서도 인용을.


기능
설명


create_line()
직선(꺾은선)

create_oval()
타원

create_arc()
원호(타원의 원주 부분)

create_rectangle()
사각형

create_polygon()
다각형

create_image()
이미지

create_bitmap()
비트맵

create_text()
문자열


또한 자주 사용되는 옵션도 소개합니다.


처리
설명


fill = 색상
내부를 채우는 색

stipple = 비트맵
내부를 채울 때 모양이 되는 비트맵

outline = 색상
테두리 색

width = 폭
테두리 너비(기본값은 1.0)


객체에 태그 지정(그리기 후 지우기)



각 객체에는 "tag"라는 것이 있습니다.
이 태그를 지정하면 그린 후에 지울 수 있습니다.

파이썬
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter

#
# GUI設定
#
root = Tkinter.Tk()
root.title(u"TkinterのCanvasを使ってみる")
root.geometry("800x450")


#「描く」ボタンが押されたら
def draw(event):
    canvas.create_oval(10, 10, 140, 140, tag="oval")



#「消す」ボタンが押されたら
def erase(event):
    canvas.delete("oval")



#キャンバスエリア
canvas = Tkinter.Canvas(root, width = 800, height = 300)

#円を描く
canvas.create_oval(10, 10, 140, 140, tag="oval")

#キャンバスバインド
canvas.place(x=0, y=0)



# 「描く」ボタン
button_draw = Tkinter.Button(root, text=u'描く',width=15)
button_draw.bind("<Button-1>",draw)
button_draw.place(x=100,y=350)


# 「消す」ボタン
button_draw = Tkinter.Button(root, text=u'消す',width=15)
button_draw.bind("<Button-1>",erase)
button_draw.place(x=350,y=350)


#
# GUIの末端
#
root.mainloop()

이렇게하면 다음과 같은 창이 만들어집니다.


"지우기"버튼을 누르면 원이 사라지고 "그리기"버튼을 누르면 원이 다시 그려집니다.
이 때,canvas.create_oval(10, 10, 140, 140, tag="oval")그리고, tag="oval"와 같이 그리는 객체에 「tag」속성을 지정해 두면,canvas.delete("oval")이와 같이 임의의 tag 속성을 가진 객체를 삭제할 수 있습니다.

우선 여기까지입니다.

좋은 웹페이지 즐겨찾기