簡體   English   中英

在wxPython中更新treectrl

[英]Updating treectrl in wxPython

一旦顯示,如何在treectrl中更改或添加項目。 我創建了一個簡單的示例,如何在init之后添加一個額外的項目(例如Bananas)。 init退出之前對其進行更改即可,但是我希望能夠在顯示Treectrl之后對其進行更新:

import wx

class TreeFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self, None, title='TreeCtrl')

        tree_ctrl = wx.TreeCtrl(self, -1, style=wx.TR_DEFAULT_STYLE | \
                                            wx.TR_FULL_ROW_HIGHLIGHT | \
                                            wx.TR_EDIT_LABELS)

        # Add the tree root
        root = tree_ctrl.AddRoot('Food')
        tree_ctrl.AppendItem(root,'Fruit (3)')
        tree_ctrl.AppendItem(tree_ctrl.GetLastChild(root),'Apple (1)')
        tree_ctrl.AppendItem(tree_ctrl.GetLastChild(root),'Orange (2)')

        tree_ctrl.ExpandAll()
        self.Centre()

    # So how can I change the treectrl above after _init_ .
    # E.g. Add bananas

    print 'do something'



if __name__ == '__main__':
    app = wx.App(0)
    frame = TreeFrame()
    frame.Show()
    app.MainLoop()

我添加了一個按鈕。 如果單擊該按鈕,則Banana(3)將附加到樹上。 詳情請參照注釋(ESP。 NOTE:

import wx

class TreeFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self, None, title='TreeCtrl')
        tree_ctrl = wx.TreeCtrl(self, -1, style=wx.TR_DEFAULT_STYLE | \
                                wx.TR_FULL_ROW_HIGHLIGHT | \
                                wx.TR_EDIT_LABELS)

        # NOTE: Bind callback which will be called when the button is clicked.
        button = wx.Button(self, -1, label='Add banana')
        button.Bind(wx.EVT_BUTTON, self.add_banana)

        # NOTE sizer
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(tree_ctrl, 1, wx.EXPAND|wx.ALL)
        sizer.Add(button, 0, wx.EXPAND|wx.ALL)
        self.SetSizer(sizer)


        # Add the tree root
        root = tree_ctrl.AddRoot('Food')
        tree_ctrl.AppendItem(root,'Fruit (3)')
        tree_ctrl.AppendItem(tree_ctrl.GetLastChild(root),'Apple (1)')
        tree_ctrl.AppendItem(tree_ctrl.GetLastChild(root),'Orange (2)')

        tree_ctrl.ExpandAll()
        self.Centre()

         # NOTE: Save tree_ctrl, root as attribute
         #       to make them available in add_banana method.
        self.tree_ctrl = tree_ctrl
        self.root = root

    # called when the button is clicked.
    def add_banana(self, evt):
        self.tree_ctrl.AppendItem(self.tree_ctrl.GetLastChild(self.root), 'Banana (3)')


if __name__ == '__main__':
    app = wx.App(0)
    frame = TreeFrame()
    frame.Show()
    app.MainLoop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM