我已经创建了一个settings.ini,并试图绕过Kivy Config Parser。我必须在str()中附上我所有的'get'语句才能使大部分语句工作,所以我想知道我是否误解了一些基本的东西。另外,我无法正确报告布尔,所以:
的Settings.ini
[settings]
option_enabled = False
test.py
from kivy.config import ConfigParser
config = ConfigParser()
config.read('settings.ini')
print(config.get('settings', 'option_enabled'))
返回'False'
if config.get('settings', 'option_enabled'):
print "true"
返回'true'
谁能告诉我哪里出错?
答案 0 :(得分:0)
[编辑,因为OP通过更正拼写错误改变了问题]
我对kivy不熟悉,无法测试,但这是我对它的看法:
我相信write.csv(x=table_c, file="C.csv");
会返回一个字符串值,因此当您使用config.get('settings', 'option_enabled')
语句将其括起来时,它会打印字符串值print()
在'False'
语句中使用相同内容时,if
语句中的字符串值将返回if
,并调用'True'
你可以尝试一下,让我知道这就是答案吗?
答案 1 :(得分:0)
As" Edwin van Mierlo"回答说,你从config.get获得了一个字符串......
我的建议是使用config.getint
ini文件
[settings]
option_enabled = 0
代码:
if config.getint('settings', 'option_enabled'): #notice the getint instead of get
print "true"
答案 2 :(得分:0)
您正面临这个问题,因为 python 的标准 ini 解析器将布尔值写入并期望为 True/False,而 kivy 的 ConfigParser 期望(并写入)0/1。这就是您可能会看到使用关闭开关创建的面板的原因,而实际上它们在 ini 中被定义为 True。然而,如果你从 kivy 的设置面板保存一个布尔值,你会看到它会被保存为 1(与 True 相反)。 好的部分是python的标准ini解析器也理解0/1。 不好的部分是python的标准ini管理器写入的默认值保存为True/False,当kivy拾取时(因为这些值无法识别)它们将默认为0(false)。
根据 kivy 文档,您可以使用 BooleanSettings 的自定义形式并告诉它读取和写入 True/False 值(而不是 0/1),但我还没有找到这些设置应该在哪里实例化(因为一切都是由 ConfigParser 自动完成的)。
不是一个完整的答案,但希望它无论如何都会有所帮助。