Open In App

wxPython - CollapseAndReset() method in wx.TreeCtrl

Last Updated : 09 Jul, 2020
Comments
Improve
Suggest changes
Like Article
Like
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

Next Article

Similar Reads