Windows应用程序编程与wxPython

1 投票
2 回答
755 浏览
提问于 2025-04-15 12:39

在开发我的一个项目时,我发现需要在不同的使用会话之间保存一些信息。比如,当用户打开应用程序,修改了一些设置,然后关闭了应用。下次用户再打开这个应用,不管是重启后还是过了15分钟,我希望能够保留之前修改过的设置。

我想问的就是关于这种信息保存的问题。无论是使用win32 API编程,还是用MFC框架,或者是用像wxPython或wxRuby这样的高级语言工具,怎样才能保持我所说的这种信息持久性呢?是把这些信息写成一个临时文件保存在磁盘上吗?还是保存到某个注册表设置里?或者还有其他我不知道的存储方式吗?

2 个回答

1

多年来,处理这个问题的方法有很多种。

这些方法包括(但不限于):

  1. 注册表条目。
  2. INI文件。
  3. XML文件。
  4. 简单的二进制/文本文件。
  5. 数据库。

现在,大多数人会选择使用存放在用户特定的AppData文件夹里的XML文件来处理这类事情。你可以根据自己的需要选择方法。例如,对于一些简单的事情,使用数据库可能显得过于复杂,而对于一些大型的持久化对象,注册表就不太合适。你需要根据自己的实际情况来选择合适的方法。

这里有一个关于这个话题的很好的讨论

3

我建议分两步来做这件事。

  1. 第一步是把你的设置保存为字符串。你可以这样做:

    a) 使用任何XML库,或者手动输出XML,把它变成字符串,然后再从字符串中读取。

    b) 直接使用pickle模块,把你的设置对象保存为字符串。

    c) 用某种方式从设置生成一个字符串,以后可以再把它读回来,比如使用yaml、config、JSON等。其实JSON是个不错的选择,因为simplejson让这变得很简单。

  2. 一旦你有了把设置转换成字符串和从字符串转换回来的方法,你只需要把它存储在一个可以长期保存的地方,这样下次就能读取回来。你可以:

    a) 使用wx.Config,这样在Windows上会保存到注册表,其他平台则保存到不同的地方,所以你不需要担心它保存在哪里,你可以用平台无关的方式读取值。不过如果你愿意,也可以直接用wx.Config来保存和读取设置。

    b) 直接把设置字符串保存到操作系统为你的应用分配的文件夹里,比如Windows的应用数据文件夹。

把设置保存为字符串,然后再用wx.Config保存的好处是,你可以很方便地在将来更改数据保存的位置。例如,如果将来需要上传设置,你只需要上传设置字符串就可以了。

撰写回答