Page 222 - Em Học Python
P. 222
TẠO CÁC TƯƠNG TÁC
Ta có thể làm cho hình tam giác này tương tác lại khi có người nhấn nút trên bàn
phím bằng các liên kết sự kiện ⟨event binding⟩. Sự kiện ⟨event⟩ là những thứ xảy ra trong lúc
một chương đang chạy, như là chuột di chuyển, bàn phím được nhấn, hoặc là cửa sổ bị
đóng lại. Em có thể bảo tkinter theo dõi những sự kiện này và làm gì đó mỗi khi sự kiện
xảy ra.
Để xử lý sự kiện (tức là bảo Python làm gì đó mỗi khi một sự kiện xảy ra), ta đầu tiên
cần phải tạo hàm. Phần liên kết xảy ra khi ta bảo tkinter rằng hàm này bị ràng buộc
⟨bound⟩ (hay còn gọi là gắn ⟨associate⟩ ) với một sự kiện cụ thể nào đó; nói cách khác,
tkinter sẽ tự động gọi hàm để xử lý sự kiện xảy ra.
Ví dụ, để hình tam giác của chúng ta di chuyển mỗi khi nhấn bàn phím, ta có thể
viết hàm như sau:
def movetriangle(event):
canvas.move(1, 5, 0)
Hàm này chỉ nhận một tham số duy nhất là event, là cái mà tkinter sẽ sử dụng để
đưa thông tin về sự kiện vào trong hàm. Sau đó ta bảo tkinter hàm này sẽ được dùng cho
một sự kiện cụ thể, bằng cách dùng hàm bind_all trên bảng vẽ. Code hoàn chỉnh trông
như thế này:
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):
canvas.move(1, 5, 0)
canvas.bind_all('<KeyPress-Return>', movetriangle)
Tham số đầu tiên của hàm là sự kiện mà ta muốn tkinter theo dõi. Trong trường
hợp này là <KeyPress-Return>, tức là lúc ta nhấn nút ENTER hoặc RETURN. Ta nói với
tkinter rằng ta muốn hàm movetriangle sẽ được gọi mỗi khi sự kiện KeyPress xảy ra.
196 Chương 12