如何使用PersistenceManager保存ListCtrl值?

时间:2019-03-28 10:15:10

标签: python wxpython

我有一个wx.ListCTRL,它会累积键入测试结果。我想在应用程序关闭时保存结果,然后在再次运行该应用程序时重新加载过去的结果。该列表定义为:

self.test_list = wx.ListCtrl(panel, wx.ID_ANY, name="Tests", style=wx.LC_REPORT)
self.test_list.InsertColumn(0, "Accuracy")
self.test_list.InsertColumn(1, "Speed")
self.test_list.InsertColumn(2, "Duration")
self.test_list.InsertColumn(3, "Words")
self.test_list.InsertColumn(4, "User")
self.test_list.InsertColumn(5, "Timestamp")
self._persistence_manager.RegisterAndRestore(self.test_list)

PersistenceManager对象定义为:

persistence_file = os.path.join(os.getcwd(), "typing_test.dat")
self._persistence_manager = pm.PersistenceManager.Get()
self._persistence_manager.SetPersistenceFile(persistence_file)
self._persistence_manager.SetManagerStyle(style=pm.PM_SAVE_RESTORE_TREE_LIST_SELECTIONS|pm.PM_PERSIST_CONTROL_VALUE)

正在运行的测试将数据添加到列表中,如下所示:

test_list.InsertItem(index, f"{results['accuracy']}%")
test_list.SetItem(index, 1, f"{results['speed']} WPM")
test_list.SetItem(index, 2, f"{results['duration'].seconds} seconds")
test_list.SetItem(index, 3, str(results['words']))
test_list.SetItem(index, 4, user_name)
test_list.SetItem(index, 5, results["timestamp"])
self.GetParent()._persistence_manager.Save(self.GetParent().test_list)

最后,以下内容保存在持久性文件中:

[Persistence_Options/ListCtrl]
[Persistence_Options/ListCtrl/Tests]
ColWidths=('list', '[80, 80, 80, 80, 80, 80]')
Selections=('list', '[1]')

我可以保留此列表的值还是仅保留选择和宽度?

谢谢。

0 个答案:

没有答案