Widget Canvas là một trong những widget đa phương diện trong thư viện tkinter dùng cung cấp đồ họa cho ứng dụng. Nó dùng vẽ hình dạng, hình ảnh, hoạt ảnh đối tượng hoặc hình ảnh phức tạp. Thuộc tính alpha của hình dạng xác định rằng nếu ta cung cấp giá trị alpha cho hình dạng, nó phải có hành vi trong suốt đối với cửa sổ cha.
Để định nghĩa thuộc tính alpha, ta giả định mọi hình dạng đều có màu và khi cung cấp giá trị alpha, nó phải chuyển thành Image. Image có thể hiển thị bằng widget Canvas.
Ví dụ
# Import thư viện cần thiết
from tkinter import *
from PIL import Image, ImageTk
# Tạo instance của frame tkinter
win = Tk()
# Đặt kích thước cửa sổ tkinter
win.geometry("700x350")
# Lưu hình ảnh mới tạo
images = []
# Định nghĩa hàm tạo hình chữ nhật trong suốt
def create_rectangle(x, y, a, b, **options):
if 'alpha' in options:
# Tính độ trong suốt alpha cho mỗi màu (RGB)
alpha = int(options.pop('alpha') * 255)
# Dùng biến fill để tô màu hình với màu trong suốt
fill = options.pop('fill')
fill = win.winfo_rgb(fill) + (alpha,)
image = Image.new('RGBA', (a - x, b - y), fill)
images.append(ImageTk.PhotoImage(image))
canvas.create_image(x, y, image=images[-1], anchor='nw')
canvas.create_rectangle(x, y, a, b, **options)
# Thêm widget Canvas
canvas = Canvas(win)
# Tạo hình chữ nhật trong canvas
create_rectangle(50, 110, 300, 280, fill="blue", alpha=.3)
create_rectangle(60, 90, 310, 250, fill="red", alpha=.3)
canvas.pack()
win.mainloop()
Kết quả
Chạy mã trên để xem cách thuộc tính alpha thay đổi trên hình dạng.
