Collapsible Pane in Tkinter | Python (original) (raw)

import tkinter as tk

from tkinter import ttk

class CollapsiblePane(ttk.Frame):

`` def __init__( self , parent, expanded_text = "Collapse <<" ,

`` collapsed_text = "Expand >>" ):

`` ttk.Frame.__init__( self , parent)

`` self .parent = parent

`` self ._expanded_text = expanded_text

`` self ._collapsed_text = collapsed_text

`` self .columnconfigure( 1 , weight = 1 )

`` self ._variable = tk.IntVar()

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