0

我的问题是,当我的树中有一个节点时,它不会将树保存到文件中。

保存到文件的代码是:

def project_save(self):


    try:
        output = open(self.project_file, 'w+')
        output.write(self.tree.GetItemText(self.root) + '\n')
        count = self.tree.GetChildrenCount(self.root)
        iter = 0
        child = ''

        for i in range(count):
            if i == 0:
                child, cookie = self.tree.GetFirstChild(self.root)

            else:
                child, cookie = self.tree.GetNextChild(self.root, cookie)

            output.write(self.tree.GetItemText(child) + '\n')
        output.close()
        self.projectdirty = False

    except IOError:
        MsgDlg(self, 'There was an error saving the new project file.', 'Error!', wx.OK)

当我的树看起来像:

root
 |
  ---item
 |
  ---item

它工作得很好

但是当我的树看起来像:

root
|
  ---item
 |
  ---item
 |
  -node
    |
     ---item
    |
     ---item

它给了我一个错误,我的文件最终为空白

文件“project_manager.py”

output.write(self.tree.GetItemText(child) + '\n')

GetItemText 中的文件“C:\Python27\lib\sit-packages\wx-2-8-msw-ansi\wx\contrls.py”,第 5303 行

返回控件.TreeCtrl_GetItemText(*args, **kwargs)

wx._core.PyAssertionError: c++ assertion "item.IsOk()" failed at ....\src\msw\treectrl.cpp(963) in wxTreeCtrl::GetItemText(): 无效的树项

4

1 回答 1

0

几年前,PersistentControls 模块发布,它应该可以帮助您保存和恢复 wxPython 中的任何小部件。请参阅以下链接:

于 2012-05-04T14:54:51.633 回答