Tkinter เป็นไลบรารีสร้าง GUI ของ python ในบทความนี้ เราจะมาดูกันว่าเราจะสร้างบานหน้าต่างที่ยุบได้ได้อย่างไร สิ่งเหล่านี้มีประโยชน์เมื่อเรามีข้อมูลจำนวนมากที่จะแสดงบนผืนผ้าใบ GUI แต่เราไม่ต้องการให้แสดงเสมอ มันถูกทำให้พับได้เพื่อให้สามารถแสดงได้ตามต้องการและเมื่อจำเป็น
โปรแกรมด้านล่างสร้างบานหน้าต่างที่ยุบได้ซึ่งเราจะเห็นผลทั้งหลังจากขยายและหดตัวลูกศร ความคิดเห็นของโค้ดบ่งบอกถึงแนวทางที่เราดำเนินการในแต่ละขั้นตอน
ตัวอย่าง
from tkinter import * import tkinter as tk from tkinter import ttk from tkinter.ttk import * class cpane(ttk.Frame): def __init__(self, MainWindow, expanded_text, collapsed_text): ttk.Frame.__init__(self, MainWindow) # The class variable self.MainWindow = MainWindow self._expanded_text = expanded_text self._collapsed_text = collapsed_text # Weight=1 to grow it's size as needed self.columnconfigure(1, weight=1) self._variable = tk.IntVar() # Creating Checkbutton self._button = ttk.Checkbutton(self, variable=self._variable, command=self._activate, style="TButton") self._button.grid(row=0, column=0) # Create a Horizontal line self._separator = ttk.Separator(self, orient="horizontal") self._separator.grid(row=0, column=1, sticky="we") self.frame = ttk.Frame(self) # Activate the class self._activate() def _activate(self): if not self._variable.get(): # Remove this widget when button pressed. self.frame.grid_forget() # Show collapsed text self._button.configure(text=self._collapsed_text) elif self._variable.get(): # Increase the frame area as needed self.frame.grid(row=1, column=0, columnspan=2) self._button.configure(text=self._expanded_text) def toggle(self): self._variable.set(not self._variable.get()) self._activate() # Creating root window or MainWindow root = Tk() root.geometry('300x300') # Creating Object of Collapsible Pane Container cpane_obj = cpane(root, 'Close Me', 'Open Me!') cpane_obj.grid(row=0, column=0) # Buttons to # appear in collapsible pane b = Button(cpane_obj.frame, text=" Frame Expanded").grid( row=1, column=2, pady=20) b = Checkbutton(cpane_obj.frame, text="Hi There ! How are you doing?").grid( row=3, column=4, pady=20) mainloop()
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -