Open In App

wxPython – CollapseAndReset() method in wx.TreeCtrl

Last Updated : 09 Jul, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

In this article we are going to learn about another function in wxPython, that is, CollapseAndReset() method associated with wx.TreeCtrl class of wxPython. CollapseAndReset() function simply collapses a particular item and removes all its children.

It takes TreeItemId as argument.

Syntax: wx.TreeCtrl.CollapseAndReset(Self, item)

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,
                                 (150,150), 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.ExpandAll()
  
        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.CollapseAndReset(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:

before clicking button

after clicking button



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads