我正在考虑创建一些 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/ ”文件夹中搜索该文件。
请提供一些示例应用程序名称以获取更多详细信息。
希望这可以帮助你找到自己的路。