Aktualisieren Sie die Panel -Werte der Kivy -Einstellungen mit geänderter KonfigurationPython

Python-Programme
Anonymous
 Aktualisieren Sie die Panel -Werte der Kivy -Einstellungen mit geänderter Konfiguration

Post by Anonymous »

Frage: < /h2>
Ich erstelle eine App und verwende das Kivy -Einstellungsspannel, um die Einstellungen zu ändern. Einige der Einstellungen werden in ConfigParSerProperties gespeichert und können auch außerhalb des Einstellungsfelds geändert werden. Wenn ich das Einstellungsfeld erneut eröffnet habe, sind die Werte im Einstellungsfeld immer noch die alten. Kivy -Einstellungseintrag, aber hier wird nur 1 Widget erstellt, welche Aktualisierungen (ein Listenpopup). Ich suche nach einer Möglichkeit, mehrere Einstellungselemente verschiedener Typen zu aktualisieren. Dies ist ein (bemerkenswerter) langsamer Prozess, wenn das Feld mehrere Seiten enthält (was in diesem Beispiel nicht der Fall ist, um die Dinge einfach zu halten). Sie können sehen, dass sich der Wert nicht vom Startwert ändert. < /p>

Code: Select all

from kivy.app import App
from kivy.properties import ConfigParserProperty
from random import randint
from kivy.clock import Clock
from kivy.uix.button import Button
import json

class MyApp(App):
test = ConfigParserProperty(0, 'testing', 'test_par', 'app_config', val_type=int)
use_kivy_settings = False   # disable kivy settings in options

def __init__(self, **kwargs):
super().__init__(**kwargs)
Clock.schedule_interval(self.new_number, 1)

def build(self):
self.config.read("test.ini")
self.config.name = "app_config"
_app = super().build()
_app.add_widget(Button(text='open settings',
size=_app.size,
pos=_app.pos,
on_release=self.open_settings))
return _app

def build_settings(self, settings):
_setts = json.dumps([
{
"type": "title",
"title": "Test Settings"
},
{
"type": "numeric",
"title": "Test Var",
"desc": "Randomly changing test var, wish it would change here too",
"section": "testing",
"key": "test_par"
}])
settings.add_json_panel('Test Panel', self.config, data=_setts)
self.settings = settings

def new_number(self, *args, **kwargs):
# generate random new values for test
self.test = randint(0, 0xff)
print(self.test)

if __name__ == "__main__":
app = MyApp()
app.run()

< /code>
 Was ich ausprobiert habe: < /strong>

Hinzufügen dieses Codes ändert den Wert jedes Mal, wenn das Panel geöffnet wird. Zerstört und stellt das Panel jedes Mal, wenn Sie es öffnen. Das ist langsam mit mehreren Panel -Elementen. < /P>
    def open_settings(self, *args):
self.destroy_settings()  # clear settings
return super().open_settings(*args)
Wenn jemand eine Möglichkeit kennt, bestimmte Panel -Elemente mit Änderungen in den configParSerProperties zu ändern/zu aktualisieren, sehr geschätzt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post