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>
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.
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]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 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) [/code] Wenn jemand eine Möglichkeit kennt, bestimmte Panel -Elemente mit Änderungen in den configParSerProperties zu ändern/zu aktualisieren, sehr geschätzt.
Ich kodiere eine einfache App. Im Moment habe ich eine Anmeldung in Seite gemacht. Aber die Tasten scheinen nicht zu funktionieren. Die Probleme sind, dass die Schaltflächen nicht mit der Python...
Bearbeiten: Ich habe das Problem gefunden. Einige Linien fehlten, was zu diesen unerwünschten Segmenten in der Grafik führte. Ich konnte diese Segmente löschen , indem ich fehlende Daten mit Nan...