Page 220 - Em Học Python
P. 220
Tiếp, ta tạo ra một vòng lặp đơn giản để đếm
từ 0 đến 59, bắt đầu với for x in range(0, 60):.
Khối code bên trong vòng lặp sẽ di chuyển hình tam
giác đi ngang màn hình. Hàm canvas.move sẽ di
chuyển các các hình đã được vẽ ra bằng cách tăng
hoặc giảm các toạ độ x và y của chúng. Ví dụ, với
canvas.move(1, 5, 0), ta di chuyển đối tượng số 1
(là số hiệu của hình tam giác lúc nãy) sang ngang 5
điểm ảnh và đi xuống 0 điểm ảnh. Để nó di chuyển
về vị trí ban đầu, ta có thể gọi canvas.move(1, -5,
0).
Hàm tk.update() buộc tkinter cập nhật lại cửa sổ (tức là vẽ lại nó). Nếu không
dùng update, tkinter sẽ chờ cho đến khi vòng lặp chạy xong rồi mới di chuyển hình tam
giác, nghĩa là em sẽ nhìn thấy hình nhảy một phát đến vị trí cuối cùng luôn thay vì di
chuyển từ từ ngang qua bảng vẽ. Dòng cuối cùng của vòng lặp, time.sleep(0.05), nói
Python “nghỉ tạm” một phần hai mươi giây (0.05 giây), trước khi chạy tiếp.
Để hình tam giác di chuyển chéo xuống góc dưới màn hình, ta có thể sửa code lại
một chút và gọi move(1, 5, 5). Để thử code mới, đóng bảng vẽ lại, tạo một file mới ( File ►
New Window) với đoạn code sau:
import time
from tkinter import *
tk = Tk()
canvas = Canvas(tk, width=400, height=400)
canvas.pack()
canvas.create_polygon(10, 10, 10, 60, 50, 35)
for x in range(0, 60):
canvas.move(1, 5, 5)
tk.update()
time.sleep(0.05)
194 Chương 12