存储应用程序偏好设置和数据

存储应用程序偏好设置和数据

我正在考虑创建一些 Ubuntu 应用程序,但找到好的资源很难。

我正在使用 quick 工具包,但真的想了解更多。在 Linux/Ubuntu 中,通常如何存储应用程序首选项和设置。

它是否像创建一个 XML 文件并保存信息然后在应用程序引导时从该文件读取信息一样简单?

如果有人能给我指明方向我将不胜感激。

编辑

这是我在等待回复时写的。可能和偏好设置完全一样,只是用代码编写的。你可能会发现它很有用:

import ConfigParser, os # We need to be able to store and recal settings

#first try to read the config.cfg file
config = ConfigParser.RawConfigParser()
configFile = 'data/config.cfg'

# We need to set some defaults
monState = False
tueState = False
wedState = False
thurState = False
friState = False
satState = False
sunState = False

# Creating the Config file
def createConfigFile(fileName):
    print "CREATING CONFIG" # not needed, but nice for debugging
    config.add_section('Preferences')
    config.set('Preferences', 'mon', False)
    config.set('Preferences', 'tues', False)
    config.set('Preferences', 'wed', False)
    config.set('Preferences', 'thur', False)
    config.set('Preferences', 'fri', False)
    config.set('Preferences', 'sat', False)
    config.set('Preferences', 'sun', False)
    rewriteConfigFile(filename)

# After reading the config file, we can update configs in memory. 
# But this will save it to file for when the application is started up again. 
def rewriteConfigFile(filename):    
    with open(filename, 'wb') as configfile:
        config.write(configfile)

# Reading the config file 
def readConfigFile(fileName):
    print "READING CONFIG"  # not needed, but nice for debugging
    global monState, tueState, wedState, thurState, friState, satState, sunState
    monState = config.getboolean('Preferences', 'mon')
    tueState = config.getboolean('Preferences', 'tues')
    wedState = config.getboolean('Preferences', 'wed')
    thurState = config.getboolean('Preferences', 'thur')
    friState = config.getboolean('Preferences', 'fri')
    satState = config.getboolean('Preferences', 'sat')
    sunState = config.getboolean('Preferences', 'sun')

# If the config does not exist, create it, then read it. Otherwise simply read it
if not config.read(configFile):    
    createConfigFile(configFile)
    readConfigFile(configFile)    
else:
    readConfigFile(configFile)

答案1

快速应用程序使用 glib 模式作为应用程序首选项。默认模式在中创建data/glib-2.0/schemas。它是一个名为的 xml 文件,net.launchpad.XXXX.gschema.xml其中 XXXX 是您的应用程序名称。

以下是示例条目:

<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="drawers">
  <schema id="net.launchpad.drawers" path="/net/launchpad/drawers/">
    <key name="maxicons-row" type="i">
      <range min="1" max="15"/>
      <default>5</default>
      <summary>Maximum Icons per Row</summary>
      <description>Minimum value = 1 Max=15</description>
    </key>
  </schema>
</schemalist>

键可以是整数 (type="i")、布尔值 (type="b") 或浮点数 (type="d")。-键名中只能使用小写字母。

要访问设置并将其绑定到小部件,您可以按如下方式获取它们(从快速生成的 PreferencesXXXXWindow.py 中获取):

def finish_initializing(self, builder):# pylint: disable=E1002
    """Set up the preferences dialog"""
    super(PreferencesDrawersDialog, self).finish_initializing(builder)

    # Bind each preference widget to gsettings
    self.settings = Gio.Settings("net.launchpad.drawers")
    widget = self.builder.get_object('maxicons_row')
    self.settings.bind("maxicons-row", widget, "value", Gio.SettingsBindFlags.DEFAULT)

要读取程序中的变量值,您可以执行以下操作:

from gi.repository import Gio
settings = Gio.Settings("net.launchpad.drawers")
integer=settings.get_int("intsetting")
float = settings.get_double("floatsetting")
bool = settings.get_boolean("booleansetting")

希望有所帮助。

答案2

如果你要存储用户数据,通常将其保存在 $HOME/.config/$YOURAPP/ 下(尽管用户可以更改它,因此最好使用xdg.BaseDirectory.xdg_config_home)。

如果你使用 Python,我推荐配置解析器库使得读取和写入结构化配置文件数据变得容易。

答案3

我没有太多使用 Linux 的工作经验。但我在开发应用程序时也遇到了类似的问题。

在 Linux 中,每个应用程序都会生成一个包含所有设置的文件。如果是 Linux 自己的应用程序,您可以轻松在“ /etc/ ”文件夹中搜索该文件。

请提供一些示例应用程序名称以获取更多详细信息。

希望这可以帮助你找到自己的路。

相关内容