'''Tkinter Tutorial Canvas Chapter(3)'''
'''16. 항목 이동'''
# - * - 코딩: cp936 -*-
# move는 오프셋
에서 x, y를 지정합니다 from Tkinter import *
root = Tk( )
# 캔버스를 만들고 배경색을 흰색으로 설정
cv = Canvas(root,bg = 'white')
# 두 개의 동일한 직사각형을 만들고 움직임 비교 이전과 차이점 after
rt1 = cv.create_rectangle( 10,10,110,110, tags = ('r1','r2','r3')) cv.create_rectangle( 10,10,110,110, tags = ('r1','r2','r3'))
# Move rt1
cv.move(rt1,20,-10) cv.pack() root.mainloop()
# move는 x를 지정할 수 있고 y는 상대 오프셋이며 음수일 수 있습니다
'''17. 항목 삭제''
# -*- 코딩: cp936 -*-
# delete는 해당 항목을 삭제합니다
from Tkinter import * root = Tk() cv = Canvas(root,bg = 'white')
# 두 개의 직사각형을 만듭니다
rt1 = cv.create_rectangle( 10,10,110,110, tags = ('r1','r2','r3')) r2 = cv.create_rectangle( 20,20,110,110, tags = ('s1','s2','s3'))
# id를 사용하여 rt1 삭제
cv.delete(rt1)
# 태그를 사용하여 r2 삭제
cv.delete('s1') cv.pack() root.mainloop()
# 항목(ID/태그)을 삭제하는 두 가지 방법
'''18. 항목 확대''
# -*- 코딩: cp936 -*-
# 스케일 스케일링 항목, 계산식: (좌표 - 오프셋)*스케일 + 오프셋
from Tkinter import * root = Tk() cv = Canvas(root,bg = 'white')
# 직사각형 두 개 생성
rt1 = cv.create_rectangle( 10,10,110,110, tags = ('r1','r2','r3'))
# y좌표를 원래 2자리로 확대해도 x좌표 값은 그대로 유지됩니다
cv.scale(rt1,0,0,1,2) cv.pack() root.mainloop()
# scale 매개변수는 (self,xoffset,yoffset,xscale,yscale)
'''19'''
# -*- 코딩: cp936 -*-
# tag_bind를 사용하여 항목과 이벤트 바인딩
from Tkinter import * root = Tk()
# 캔버스 만들기, 배경 설정 색상을 흰색으로
cv = Canvas(root,bg = 'white')
# 직사각형 3개 만들기
rt1 = cv.create_rectangle( 10,10,110,110, width = 8, tags = ('r1','r2','r3')) def printRect(event): print 'rectangle'
# 아이템 및 이벤트 바인딩
cv.tag_bind('r1','<Button-1>',printRect) cv.pack() root.mainloop()
# 직사각형 테두리를 클릭해야만 이벤트가 발생합니다
''' 20. 바인딩 추가 정의된 이벤트' ''
# -*- 코딩: cp936 -*-
# tag_bind를 사용하여 항목과 이벤트를 바인딩했는데, 이는 참조의 테스트 결과와 일치하지 않습니다.
from Tkinter import * root = Tk()
# 캔버스를 만들고 배경색을 흰색으로 설정
cv = Canvas(root,bg = 'white')
# 세 개의 직사각형 생성
rt1 = cv.create_rectangle( 10,10,110,110, width = 8, tags = ('r1','r2','r3')) def printRect(event): print 'rectangle' def printLine(event): print 'line'
# 아이템 바인딩 및 왼쪽 클릭 이벤트
cv.tag_bind('r1','<Button-1>',printRect)
# 아이템 바인딩 및 우클릭 이벤트
cv.tag_bind('r1','<Button-3>',printLine) cv.pack() root.mainloop()
# 직사각형 테두리를 클릭할 때만 이벤트가 발생합니다. 추가 매개변수는 기본적으로 사용되지 않습니다. 이 항목에 추가하는 것입니다. 원래 이벤트 기능을 대체하지 않습니다. 예시 결과: 왼쪽 및 오른쪽 키 모두에 응답합니다.
''' 21. 새 항목을 기존 태그에 바인딩합니다. ''
# -*- 코딩: cp936 -*-
# tag_bind를 사용하여 항목과 이벤트를 바인딩했습니다. 테스트 결과가 참조와 일치하지 않습니다
from Tkinter import * root = Tk()
# 캔버스를 만들고 배경색을 흰색으로 설정
cv = Canvas(root,bg = 'white')
# 세 개의 직사각형 생성
rt1 = cv.create_rectangle( 10,10,110,110, width = 8, tags = ('r1','r2','r3')) def printRect(event): print 'rectangle' def printLine(event): print 'line'
# 항목 바인딩 및 왼쪽 클릭 이벤트
cv.tag_bind ( 'r1','
# 항목 바인딩 및 마우스 오른쪽 버튼 클릭 이벤트
cv.tag_bind('r1','
# 라인을 생성하고 태그를 'r1'으로 설정합니다
cv.create_line(10,200,100,200,width = 5,tags = 'r1') cv.pack() root.mainloop()
# 이벤트를 태그('r1')에 바인딩한 후 새 항목을 생성하고 바인딩된 이벤트의 태그를 지정합니다. 이는 참조와 일치하지 않습니다.
위 내용은 Tkinter Tutorial의 Canvas Chapter(3) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!