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() ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

