Page 224 - Em Học Python
P. 224
from tkinter import *
tk = Tk()
canvas = Canvas(tk, width=400, height=400)
canvas.pack()
canvas.create_polygon(10, 10, 10, 60, 50, 35)
def movetriangle(event):
if event.keysym == 'Up':
canvas.move(1, 0, -3)
elif event.keysym == 'Down':
canvas.move(1, 0, 3)
elif event.keysym == 'Left':
canvas.move(1, -3, 0)
else:
canvas.move(1, 3, 0)
canvas.bind_all('<KeyPress-Up>', movetriangle)
canvas.bind_all('<KeyPress-Down>', movetriangle)
canvas.bind_all('<KeyPress-Left>', movetriangle)
canvas.bind_all('<KeyPress-Right>', movetriangle)
Ở dòng đầu tiên của hàm movetriangle, ta kiểm tra xem biến keysym có chứa chữ
'Up' không ở ❶. Nếu có, ta sẽ di chuyển hình tam giác đi lên trên bằng cách dùng hàm
move với các tham số 1, 0, -3 ở ❷. Tham số đầu tiên là số hiệu của tam giác, tham số thứ
hai là khoảng cách di chuyển sang phải (lúc này ta không cần đi ngang nên giá trị sẽ là 0),
và tham số thứ ba là khoảng cách di chuyển đi lên (-3 điểm ảnh).
Sau đó ta kiểm tra xem keysym có phải là 'Down' không ở ❸, nếu có thì ta di chuyển
xuống (3 điểm ảnh) ở ❹. Tiếp nữa ta kiểm tra xem có phải là 'Left' không ở ❺, nếu có ta
di chuyển sang trái (-3 điểm ảnh) ở ❻. Cuối cùng nếu không giá trị nào khớp, lệnh else ở ❼
sẽ di chuyển hình sang bên phải ở ❽.
Lúc này hình sẽ di chuyển tuỳ phím người dùng bấm.
CÁC TRƯỜNG HỢP KHÁC CẦN DÙNG SỐ HIỆU
Bất cứ khi nào ta dùng hàm create_ trên bảng vẽ, như create_polygon hay
create_rectangle, một số hiệu sẽ được trả về. Số hiệu này có thể được dùng cho các hàm
khác trong canvas, như ta đã làm lúc trước với hàm move:
198 Chương 12