我正在编写我的 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 中的值是否为 true。如何使用 if 语句编写 python 代码,我想检查 id 的设置是否将值设置为 true?
其次,我使用此代码来覆盖 settings.xml 中的值:
self.settings.setSetting(id="myidname.enabled", value="true")
它不会让我覆盖该值。你如何编写Python代码以允许我覆盖settings.xml中与id位于同一行的值?
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>
最佳答案
你的代码中有一些奇怪的东西。
首先,您似乎使用 xbmc.getSetting()
- xbmc 模块中不存在这些函数。要获取(和设置)附加组件的设置,您需要使用方法 getSetting()
和setSetting()
到 xbmcaddon.Addon()
的实例.
因此,要获取“myidname.enabled”的( bool )值(这真的是定义的设置ID吗?请显示您的settings.xml),您需要使用:
import xbmcaddon
addon = xbmcaddon.Addon()
myidnmame_enabled = addon.getSetting('myidname.enabled') == 'true'
请注意,getSetting() 始终返回字符串!要获取 bool 定义设置的 bool 值,我建议与 'true'
进行比较.
要设置设置,只需使用 setSetting()
:
import xbmcaddon
addon = xbmcaddon.Addon()
addon.setSetting('setting_id', 'true')
例如,看看其他附加组件。
编辑:
有两个相关的settings.xml:
定义设置的settings.xml。这是您(作为附加组件作者)需要定义的文件。它应该位于
xbmc\addons\script.tvguide\resources\settings.xml
.(自动生成的)用户相关的 settings.xml,XBMC 在其中存储所选值。该地址位于
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>
关于python - 如何检查 xbmc 中覆盖它们的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210451/