Tkinter là thư viện Python tạo ứng dụng dựa trên GUI. Tkinter đi kèm nhiều tính năng và mở rộng tích hợp tối ưu hiệu suất và hành vi ứng dụng. Sự kiện Tkinter cung cấp giao diện làm cầu nối giữa Người dùng và logic ứng dụng. Ta dùng Sự kiện trong ứng dụng Tkinter để làm cho nó hoạt động và chức năng.
Dưới đây là danh sách một số sự kiện Tkinter phổ biến thường dùng làm cho ứng dụng tương tác.
- <Button> − Dùng sự kiện Button trong handler gán chuột và nút bấm.
- <ButtonRelease> − Thay vì click Button, cũng kích hoạt sự kiện bằng cách thả nút chuột.
- <Configure> − Dùng sự kiện này thay đổi thuộc tính widget.
- Destroy − Dùng sự kiện này hủy hoặc chấm dứt widget cụ thể.
- <Enter> − Hoạt động như sự kiện <return> dùng lấy focus widget với con trỏ chuột.
- <Expose> − Sự kiện xảy ra khi widget hoặc phần ứng dụng trở nên hiển thị bị che bởi cửa sổ khác.
- <Focus In> − Sự kiện này dùng lấy focus widget cụ thể.
- <Focus Out> − Chuyển focus từ widget hiện tại.
- <Key Press> − Bắt đầu quá trình hoặc gọi handler bằng cách nhấn phím.
- <KeyRelease> − Bắt đầu quá trình hoặc gọi sự kiện bằng cách thả phím.
- <Leave> − Dùng sự kiện theo dõi con trỏ chuột khi người dùng chuyển từ widget này sang widget khác.
- <Map> − Dùng sự kiện Map hiển thị widget trong ứng dụng.
- <Motion> − Theo dõi sự kiện khi con trỏ chuột di chuyển hoàn toàn trong ứng dụng.
- <Unmap> − Widget có thể bị unmap khỏi ứng dụng. Tương tự ẩn widget bằng grid_remove().
- <Visibility> − Sự kiện xảy ra nếu phần ứng dụng trở nên hiển thị trên màn hình.
Ví dụ
Trong ví dụ này, ta dùng sự kiện <Button> hiển thị widget khi nút chuột được nhấn.
# Import thư viện cần thiết
from tkinter import *
# Tạo instance của frame hoặc cửa sổ tkinter
win = Tk()
# Đặt kích thước cửa sổ
win.geometry("700x350")
# Định nghĩa hàm hiển thị thông báo
def display_text(e):
label.config(text="Code never lies, comments sometimes do",
font=('Helvetica 17 bold'))
# Tạo widget label thêm văn bản
label = Label(win, text="")
label.pack(pady=50)
# Gán sự kiện nút chuột
win.bind('', display_text)
win.mainloop()