Canvas উইজেটটি Tkinter লাইব্রেরির সব থেকে বেশি ভার্সাটাইল উইজেটগুলোর মধ্যে একটি। সাধারণত এটি আকৃতি আঁকা, অবজেক্ট অ্যানিমেট করা এবং যেকোনো অ্যাপ্লিকেশনে জটিল গ্রাফিক্স তৈরি করতে ব্যবহৃত হয়। আয়তাকার আকৃতি তৈরি করতে, আমরা create_rectangle(x,y, x+width, y+height, **options) মেথড ব্যবহার করি। আমরা ক্যানভাসে আইটেম কনফিগার করতে পারি প্রপার্টি যোগ করে যেমন width, height, fill and bg, border width ইত্যাদি।
Canvas-এ alpha প্রপার্টি ক্যানভাস আইটেমের ট্রান্সপারেন্সি সংজ্ঞায়িত করে। যাইহোক, এই প্রপার্টি Tkinter লাইব্রেরিতে উপলব্ধ নয়; সুতরাং, আমাদের আকৃতিতে ট্রান্সপারেন্সি অ্যাট্রিবিউট প্রদান করার জন্য একটি ফাংশন সংজ্ঞায়িত করতে হবে। ট্রান্সপারেন্সি অ্যাট্রিবিউটের জন্য ফাংশন তৈরি করার ধাপগুলো হলো:
- একটি ইনবিল্ট ফাংশন create_rectangle(x,y,a,b, **options) সংজ্ঞায়িত করুন।
- প্রতিটি রঙ (RGB) এর জন্য alpha ক্যালকুলেট করুন যা আকৃতিতে প্রদান করা হবে।
- আকৃতি থেকে পূর্বনির্ধারিত alpha (যদি প্রযোজ্য হয়) pop() ব্যবহার করে সরান।
- winfo_rgb() ব্যবহার করে অঞ্চলে আকৃতির রঙ ক্যালকুলেট করুন এবং আকৃতিতে alpha যোগ করুন।
- যেহেতু নতুন তৈরি করা আকৃতিতে ভিন্ন রঙ এবং পটভূমি থাকবে, তাই এটি ইমেজ হিসেবে ব্যবহার করা দরকার।
- ইমেজটি সহজে ক্যানভাসে প্রদর্শন করা যায়।
উদাহরণ
# প্রয়োজনীয় লাইব্রেরি ইম্পোর্ট করুন
from tkinter import *
from PIL import Image, ImageTk
# Tkinter ফ্রেমের উদাহরণ তৈরি করুন
win = Tk()
# Tkinter উইন্ডোর আকার সেট করুন
win.geometry("700x350")
# নতুন তৈরি করা ইমেজ সংরক্ষণ করুন
images = []
# ট্রান্সপারেন্ট আয়ত তৈরি করার ফাংশন সংজ্ঞায়িত করুন
def create_rectangle(x, y, a, b, **options):
if 'alpha' in options:
# প্রতিটি রঙ (RGB) এর জন্য আলফা ট্রান্সপারেন্সি ক্যালকুলেট করুন
alpha = int(options.pop('alpha') * 255)
# আকৃতিকে ট্রান্সপারেন্ট রঙ দিয়ে পূরণ করতে fill ভেরিয়েবল ব্যবহার করুন
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)
# একটি Canvas উইজেট যোগ করুন
canvas = Canvas(win)
# Canvas-এ আয়ত তৈরি করুন
create_rectangle(50, 110, 300, 280, fill="blue", alpha=.3)
create_rectangle(40, 90, 420, 250, fill="red", alpha=.1)
canvas.pack()
win.mainloop()
আউটপুট
উপরের কোড চালালে ক্যানভাসে একাধিক ট্রান্সপারেন্ট আয়ত প্রদর্শিত হবে।
