ผ้าใบ วิดเจ็ตเป็นหนึ่งในวิดเจ็ตที่หลากหลายที่สุดใน Tkinter Library โดยทั่วไปจะใช้เพื่อวาดรูปร่าง ทำให้วัตถุเคลื่อนไหว และสร้างกราฟิกที่ซับซ้อนในแอปพลิเคชันใดๆ ในการสร้างรูปร่างเช่นสี่เหลี่ยมผืนผ้า เราใช้ create_rectangle(x,y, x+ width, y+ height, **ตัวเลือก) กระบวนการ. เราสามารถกำหนดค่ารายการบนผืนผ้าใบโดยการเพิ่มคุณสมบัติเช่น ความกว้าง ความสูง การเติม และ bg ความกว้างของเส้นขอบ , ฯลฯ
อัลฟ่า คุณสมบัติในผืนผ้าใบกำหนดความโปร่งใสของรายการผ้าใบ อย่างไรก็ตาม คุณสมบัตินี้ไม่มีให้บริการในห้องสมุด Tkinter ดังนั้น เราต้องกำหนดฟังก์ชันเพื่อให้แอตทริบิวต์โปร่งใสในรูป ขั้นตอนในการสร้างฟังก์ชันสำหรับแอตทริบิวต์ความโปร่งใสคือ
- กำหนดฟังก์ชัน inbuilt create_rectangle(x,y,a,b, **options) .
- คำนวณ อัลฟา สำหรับแต่ละสี (RGB) ที่ต้องกำหนดให้กับรูปร่าง
- ลบ อัลฟ่า . ที่กำหนดไว้ล่วงหน้า (ถ้ามี) จากรูปร่างโดยใช้ pop() .
- คำนวณสีรูปร่างในพื้นที่โดยใช้ winfo_rgb() และเพิ่ม อัลฟ่า สู่รูปร่าง
- เนื่องจากรูปร่างที่สร้างขึ้นใหม่จะมีสีและพื้นหลังต่างกัน จึงจำเป็นต้องใช้สิ่งนี้เป็นรูปภาพ
- รูปภาพสามารถแสดงบนผืนผ้าใบได้อย่างง่ายดาย
ตัวอย่าง
# Import the required libraries from tkinter import * from PIL import Image, ImageTk # Create an instance of tkinter frame win= Tk() # Set the size of the tkinter window win.geometry("700x350") # Store newly created image images=[] # Define a function to make the transparent rectangle def create_rectangle(x,y,a,b,**options): if 'alpha' in options: # Calculate the alpha transparency for every color(RGB) alpha = int(options.pop('alpha') * 255) # Use the fill variable to fill the shape with transparent color 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) # Add a Canvas widget canvas= Canvas(win) # Create a rectangle in 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()
ผลลัพธ์
การเรียกใช้โค้ดด้านบนจะแสดงสี่เหลี่ยมโปร่งใสหลายรูปในแคนวาส