Canvas विजेट Tkinter लाइब्रेरी में सबसे बहुमुखी विजेट में से एक है। आमतौर पर, इसका उपयोग किसी भी एप्लिकेशन में आकृतियाँ बनाने, ऑब्जेक्ट्स को एनिमेट करने और जटिल ग्राफिक्स बनाने के लिए किया जाता है। आयत जैसी आकृतियाँ बनाने के लिए, हम create_rectangle(x, y, x+width, y+height, **options) मेथड का उपयोग करते हैं। हम कैनवस पर आइटम को चौड़ाई, ऊंचाई, फिल और bg, बॉर्डर चौड़ाई जैसी प्रॉपर्टी जोड़कर कॉन्फ़िगर कर सकते हैं।
Canvas में alpha प्रॉपर्टी कैनवस आइटम की पारदर्शिता को परिभाषित करती है। हालांकि, यह प्रॉपर्टी Tkinter लाइब्रेरी में उपलब्ध नहीं है; इस प्रकार, हमें आकृति में पारदर्शिता एट्रिब्यूट प्रदान करने के लिए एक फंक्शन परिभाषित करना होगा। पारदर्शिता एट्रिब्यूट के लिए फंक्शन बनाने के चरण हैं:
- एक इनबिल्ट फंक्शन create_rectangle(x, y, a, b, **options) परिभाषित करें।
- आकृति को प्रदान किए जाने वाले प्रत्येक कलर (RGB) के लिए alpha की गणना करें।
- pop() का उपयोग करके आकृति से पूर्वनिर्धारित alpha (यदि लागू हो) को हटाएं।
- 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 = 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()आउटपुट
उपरोक्त कोड चलाने पर कैनवस में कई पारदर्शी आयत प्रदर्शित होंगी।
