Computer >> Máy Tính >  >> Lập trình >> Python

Ngăn có thể thu gọn trong Tkinter Python

Tkinter là thư viện xây dựng GUI của python. Trong bài viết này, chúng ta sẽ xem cách chúng ta có thể tạo một ngăn có thể thu gọn. Chúng rất hữu ích khi chúng ta có một số lượng lớn dữ liệu được hiển thị trên khung GUI nhưng chúng ta không muốn hiển thị luôn luôn. Nó có thể thu gọn lại để có thể hiển thị khi cần thiết.

Chương trình dưới đây tạo ngăn có thể thu gọn, nơi chúng ta thấy kết quả sau khi mở rộng và thu gọn mũi tên. Các nhận xét về mã chỉ ra phương pháp chúng tôi thực hiện ở mỗi bước.

Ví dụ

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()

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Ngăn có thể thu gọn trong Tkinter Python

Ngăn có thể thu gọn trong Tkinter Python