- [Python] Tkinter의 Canvas 사용 목차
1. Canvas의 생성
import Tkinter as tk
master= tk.TK()
canv = tk.Canvas(master, width=180, height=180, bg='white')
canv.pack(side='bottom')
180 x 180 크기의 캔버스를 master 창 아래편에 만든다
백그라운드 칼라(배경색)은 하얀색이다
2. Canvas에 이미지 출력
import Tkinter as tk
master= tk.TK()
Canvas1 = tk.Canvas(width = 1500, height = 950)
Canvas1.config(bg="blue")
Canvas1.pack()
img = ImageTk.PhotoImage("photo.png")
Canvas1.create_image(1500/2,950/2,image = .img)
-create_image( )에서 첫번째, 두번쨰는 x-, y- 좌표이며, 캔버스 width와 height의 1/2을 사용하여
캔버스에서 이미지의 출력 좌표를 정해준다
3. 화면 전환
아래의 프로그램은 캔버스에서 1초 단위로 화면이 전환되게 한다
self.my_images = []
self.my_images.append(tk.PhotoImage(file = "images/10_image.png"))
self.my_images.append(tk.PhotoImage(file = "images/11_image.png"))
self.my_images.append(tk.PhotoImage(file = "images/12_image.png"))
self.my_image_number = 0
# set first image on canvas
self.image_on_canvas = self.Canvas1.create_image(0, 0, anchor = "nw", image = self.my_images[self.my_image_number])
self.after(1000, self.change_img)
def change_img(self):
# next image
self.my_image_number += 1
# return to first image
if self.my_image_number == len(self.my_images):
self.my_image_number = 0
# change image
self.Canvas1.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number])
self.after(1000, self.change_img)
4. 캔버스 삭제
self.Canvas1.delete("all")
화면 삭제가 필요한 경우 Frame 위에 canvas가 생성되어 있다면 캔버스를 먼저 삭제한 후에 Frame을 destory하여야 한다.
'python & 라즈베리파이' 카테고리의 다른 글
[tkinter] canvas 이미지 위에 text 출력하기 (0) | 2020.09.14 |
---|---|
[Tkinter] 화면 전환 (0) | 2020.09.10 |
[tkinter] 그림파일 출력 방법 (0) | 2020.08.27 |
[tkinter] Button 및 Button Event 처리 (0) | 2020.08.25 |
[Tkinter] Listbox 사용법 (0) | 2020.08.25 |