2

我正在处理我的 python 脚本,因为我想检查 settings.xml 中的值,如果它们的值是 true 或 false。我想检查 xml 文件中的值:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
<category label="30101">
   <setting id="myidname.enabled" value="false"/>
</category>
</settings>

我试过这个:

import xbmc 
import xbmcgui
import xbmcplugin
ACTION_BACKSPACE = 110
def onAction(self, action):
if action == ACTION_BACKSPACE:
   if self.Settings == xbmc.getSetting("myidname.enabled") == True:
      self.settings.setSetting("id=myidname.enabled", "value=false")

它不会让我检查 settings.xml 中的值,如果我有该值是否为真。你如何使用if语句编写python代码,如果它的值设置为true,我想用id检查设置?

其次,我正在使用此代码来覆盖 settings.xml 中的值:

self.settings.setSetting(id="myidname.enabled", value="true")

它不会让我覆盖该值。您如何编写 python 代码以允许我在与 id 相同的行中覆盖 settings.xml 中的值?

settings.xml 的文件位置在:c:\users\user\appdata\roaming\xbmc\addons\script.tvguide\resources。

这是更新xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
    <category label="30101">
    <setting id="myid.enabled" value="false"/>
        <setting id="myid1.enabled" value="false"/>
        <setting id="myid2.enabled" value="false"/>
        <setting id="myid3.enabled" value="false"/>
        <setting id="myid4.enabled" value="false"/>
        <setting id="myid5.enabled" value="false"/>
        <setting id="myid6.enabled" value="false"/>
        <setting id="myid7.enabled" value="false"/>
    </category>
</settings>
4

1 回答 1

2

您的代码中有一些奇怪的东西。

首先,看起来您使用的是xbmc.getSetting()- 这些功能在 xbmc 模块中不存在。要获取(和设置)附加组件的设置,您需要使用方法getSetting()和.setSetting()xbmcaddon.Addon()

所以要获得“myidname.enabled”的(布尔)值(这真的是定义的设置ID吗?请告诉我你的settings.xml)你需要使用:

import xbmcaddon
addon = xbmcaddon.Addon()
myidnmame_enabled = addon.getSetting('myidname.enabled') == 'true'

注意 getSetting() 总是返回字符串!要获得布尔定义设置的布尔值,我建议将其与'true'.

要设置设置,只需使用setSetting()

import xbmcaddon
addon = xbmcaddon.Addon()
addon.setSetting('setting_id', 'true')

例如,看看其他附加组件。

编辑:

有两个相关的 settings.xml:

  1. 定义设置的 settings.xml。这是您(作为附加组件作者)需要定义的文件。它应该位于xbmc\addons\script.tvguide\resources\settings.xml.

  2. XBMC 存储所选值的(自动生成的)用户相关的 settings.xml。这位于xbmc\userdata\addon_data\script.tvguide\resources\settings.xml. 你不应该修改它。

您似乎混合了这些文件。第一个不应该有“价值”属性!将此文件修改为例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
    <category label="30101">
    <setting id="myid.enabled" value="false"/>
        <setting id="myid1.enabled" type="bool" label="MY ID1" default="false"/>
        <setting id="myid2.enabled" type="bool" label="MY ID2" default="false"/>
        <setting id="myid3.enabled" type="bool" label="MY ID3" default="false"/>
        <setting id="myid4.enabled" type="bool" label="MY ID4" default="false"/>
        <setting id="myid5.enabled" type="bool" label="MY ID5" default="false"/>
        <setting id="myid6.enabled" type="bool" label="MY ID6" default="false"/>
        <setting id="myid7.enabled" type="bool" label="MY ID7" default="false"/>
    </category>
</settings>
于 2014-01-19T10:33:47.137 回答