Saturday, July 17, 2021

kivy 16 setting 3 .ini




#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