#project structure
setting.py
setting.ini
#setting.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.settings import SettingsWithSidebar
import json
#from kivy.config import ConfigParser
settings_json = json.dumps([
{'type': 'title', 'title': 'example title'},
{'type': 'bool', 'title': 'A boolean setting',
'desc': 'Boolean description text', 'section': 'example',
'key': 'boolexample'},
{'type': 'numeric', 'title': 'A numeric setting',
'desc': 'Numeric description text', 'section': 'example',
'key': 'numericexample'},
{'type': 'options', 'title': 'A options setting',
'desc': 'Options description text', 'section': 'example',
'key': 'optionsexample', 'options': ['option1', 'option2', 'option3']},
{'type': 'string', 'title': 'A string setting',
'desc': 'String description text', 'section': 'example',
'key': 'stringexample'},
{'type': 'path', 'title': 'A path setting',
'desc': 'Path description text', 'section': 'example',
'key': 'pathexample'},
])
settings_json2 = json.dumps([
{'type': 'title', 'title': 'example title'},
{'type': 'bool', 'title': 'A boolean setting',
'desc': 'Boolean description text', 'section': 'example2',
'key': 'boolexample'},
{'type': 'numeric', 'title': 'A numeric setting',
'desc': 'Numeric description text', 'section': 'example2',
'key': 'numericexample'},
{'type': 'options', 'title': 'A options setting',
'desc': 'Options description text', 'section': 'example2',
'key': 'optionsexample', 'options': ['option1', 'option2', 'option3']},
{'type': 'string', 'title': 'A string setting',
'desc': 'String description text', 'section': 'example2',
'key': 'stringexample'},
{'type': 'path', 'title': 'A path setting',
'desc': 'Path description text', 'section': 'example2',
'key': 'pathexample'},
])
Builder.load_string('''
<Interface>:
orientation: 'vertical'
Button:
text: 'open the settings!'
font_size: 150
on_release: app.open_settings()
''')
class Interface(BoxLayout):
pass
class SettingsApp(App):
# config = ConfigParser()
# config.read('config.ini')
def build(self):
self.settings_cls = SettingsWithSidebar
self.use_kivy_settings = False
setting = self.config.get('example', 'boolexample')
print(setting)
return Interface()
def build_config(self, config):
config.setdefaults('example',{
'boolexample': True,
'numericexample': 10,
'optionsexample': 'option2',
'stringexample': 'some_string',
'pathexample': ''
})
config.setdefaults('example2', {
'boolexample': True,
'numericexample': 10,
'optionsexample': 'option2',
'stringexample': 'some_string',
'pathexample': ''
})
def build_settings(self, settings):
settings.add_json_panel('Panel 1', self.config, data=settings_json)
settings.add_json_panel('Panel 2', self.config, data=settings_json2)
def on_config_change(self, config, section, key, value):
print(config, section, key, value)
SettingsApp().run()
-----------------------
setting.ini
[example]
boolexample = 0
numericexample = 100
optionsexample = option1
stringexample = hi
pathexample = C:\Users\zchen
[example2]
boolexample = 0
numericexample = 1111
optionsexample = option2
stringexample = some_string
pathexample =
reference:
No comments:
Post a Comment