In this article we are going to learn about CollapseAllChildren() method associated with wx.TreeCtrl class of wxPython. CollapseAllChildren() method is a simple method and is used to collapse a particular item and all of its children, recursively.
CollapseAllChildren() method takes TreeItemId as a parameter.
Syntax: wx.TreeCtrl.CollapseAllChildren(self, item)
Parameters:
Parameter Type Description item wx.TreeItemId Item Id of a Tree item that we want to collapse and all of its children recursively.
Code Example:
Python
import wx
class MyTree(wx.TreeCtrl):
def __init__( self , parent, id , pos, size, style):
wx.TreeCtrl.__init__( self , parent, id , pos, size, style)
class TreePanel(wx.Panel):
def __init__( self , parent):
wx.Panel.__init__( self , parent)
# create Tree Control
self .tree = MyTree( self , wx.ID_ANY, wx.DefaultPosition,
( 100 , 70 ), wx.TR_HAS_BUTTONS)
# Add root to Tree Control
self .root = self .tree.AddRoot( 'Root' )
# Add item to root
self .itm = self .tree.AppendItem( self .root, 'Item' )
# Add item to 'itm'
self .itm2 = self .tree.AppendItem( self .itm, "Sub Item" )
# Add child item to itm2
self .itm3 = self .tree.AppendItem( self .itm2, "Another Item" )
# Expand whole tree
self .tree.Expand( self .root)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add( self .tree, 0 , wx.EXPAND)
self .SetSizer(sizer)
# Add button in frame
self .btn = wx.Button( self , 1 , "Collapse" , ( 10 , 100 ))
# Bind event function with button
self .btn.Bind(wx.EVT_BUTTON, self .onclick)
def onclick( self , e):
# collapse all children of itm recursively
self .tree.CollapseAllChildren( self .itm)
class MainFrame(wx.Frame):
def __init__( self ):
wx.Frame.__init__( self , parent = None ,
title = 'TreeCtrl Demo' )
panel = TreePanel( self )
self .Show()
if __name__ = = '__main__' :
app = wx.App(redirect = False )
frame = MainFrame()
app.MainLoop()
|
Output: