Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Collapsible Pane ใน Tkinter Python

Tkinter เป็นไลบรารีสร้าง GUI ของ Python ในบทความนี้เราจะมาดูวิธีสร้าง Collapsible Pane (บานหน้าต่างย่อ-ขยายได้) พวกมันมีประโยชน์เมื่อเรามีข้อมูลจำนวนมากที่ต้องการแสดงบน GUI canvas แต่ไม่ต้องการแสดงตลอดเวลา ทำให้สามารถย่อ-ขยายได้ตามต้องการ

โปรแกรมด้านล่างสร้าง Collapsible Pane โดยเราเห็นผลลัพธ์ทั้งหลังขยายและหดตัวของลูกศร คอมเมนต์ในโค้ดบ่งชี้วิธีการที่เราใช้ในแต่ละขั้นตอน

ตัวอย่าง

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)
        # ตัวแปรคลาส
        self.MainWindow = MainWindow
        self._expanded_text = expanded_text
        self._collapsed_text = collapsed_text
        # Weight=1 เพื่อขยายขนาดตามต้องการ
        self.columnconfigure(1, weight=1)
        self._variable = tk.IntVar()
        # สร้าง Checkbutton
        self._button = ttk.Checkbutton(self, variable=self._variable,
            command=self._activate, style="TButton")
        self._button.grid(row=0, column=0)
        # สร้างเส้นแนวนอน
        self._separator = ttk.Separator(self, orient="horizontal")
        self._separator.grid(row=0, column=1, sticky="we")
        self.frame = ttk.Frame(self)
        # เปิดใช้งานคลาส
        self._activate()

    def _activate(self):
        if not self._variable.get():
            # ลบวิดเจ็ตนี้เมื่อกดปุ่ม
            self.frame.grid_forget()
            # แสดงข้อความย่อ
            self._button.configure(text=self._collapsed_text)
        elif self._variable.get():
            # เพิ่มพื้นที่เฟรมตามต้องการ
            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()

# สร้างหน้าต่างหลักหรือ MainWindow
root = Tk()
root.geometry('300x300')

# สร้างออบเจ็กต์ของ Collapsible Pane Container
cpane_obj = cpane(root, 'Close Me', 'Open Me!')
cpane_obj.grid(row=0, column=0)

# ปุ่มที่จะปรากฏใน 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()

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลดังนี้ −

Collapsible Pane ใน Tkinter Python

Collapsible Pane ใน Tkinter Python