Ich benutze die neueste Version von Kivy: v1.10.1.dev0, git-Unknown, 20171208
, Python v3.6.2
, Mac OS.Wie Widgets von BoxLayout neu positionieren
Ich möchte folgendes erreichen: Wenn ich einen Wert in den Einstellungen reposition/redraw BoxLayout
mit den geänderten Einstellungen aktualisiere, aktualisiere ich in meinem Fall size_hint
Wert. Hier ist die Arbeit, die ich habe bisher:
my.py
from kivy.app import App
class MyApp(App):
def build_config(self, config):
config.read('./my.ini')
def build_settings(self, settings):
settings.add_json_panel('Test', self.config, filename='my.json')
def on_config_change(self, config, section, key, value):
if section in ('layout',) and key in ('size_hint',):
# NOT WORKING!!
# print(self.root.canvas.clear())
# self.root.canvas.ask_update()
# self.root.canvas.draw()
# NOT WORKING!!
print(self.root)
print(self.root.do_layout())
if __name__ == "__main__":
MyApp().run()
my.kv
#:import SettingsWithSidebar kivy.uix.settings.SettingsWithSidebar
BoxLayout:
RecycleView:
size_hint: float(app.config.get('layout', 'size_hint')), 1
Button:
text: 'Open Settings'
on_touch_down: app.settings_cls = SettingsWithSidebar; app.open_settings()
RecycleView:
size_hint: 1-float(app.config.get('layout', 'size_hint')), 1
Button:
text: 'Just a test'
my.ini
[layout]
size_hint = 0.6
my.json
[
{
"type": "string",
"title": "Size Hint",
"desc": "Size Hint",
"section": "layout",
"key": "size_hint"
}
]
Also, wie sehe ich das neue Layout mit dem neuen Wert size_hint
aktualisiert, wenn ich das Einstellungsfenster schließe?
Thx!