Ich habe eine Frage bezüglich der Aktualisierung des Etikettentextes gestellt (Kivy change label text with python) - es wurde beantwortet und hat funktioniert, aber ich habe stundenlang versucht, meinen laufenden Code an ScreenManager
anzupassen, damit ich mehrere Bildschirme haben kann. Ich habe den Code auf die grundlegenden Dinge reduziert, die ich nicht funktionieren kann.Kivy ScreenManager - Etikettentext aktualisieren
ScreenManager
Code bricht die Lösung, ich weiß, was das Problem ist, ich kann es einfach nicht lösen. Der Code funktioniert, Text und Zeit aktualisiert in der Shell, aber nicht die Etiketten, konnte ich return self.first_screen
nicht hinzufügen, um die Kivy def build
so seine Bindung an the_time: _id_lbl_time
- Jede Hilfe/Zeiger würde wirklich geschätzt werden.
from kivy.app import App
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.properties import ListProperty, StringProperty, ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen, WipeTransition, FadeTransition
from kivy.uix.anchorlayout import AnchorLayout
from kivy.clock import Clock
import time
from datetime import datetime, timedelta
class FirstScreen(Screen):
def update_time(self, sec):
MyTime = time.strftime("%H:%M:%S")
print MyTime # to test update_time is called etc
self.the_time.text = MyTime #<---- self.the_time isn't working
class SecondScreen(Screen):
def update_text(self, sec):
MyText = 'New Text'
print MyText # to test update_text is called etc
self.the_set.text = MyText #<---- self.the_set isn't working
class MyScreenManager(ScreenManager):
pass
Builder.load_string('''
<FirstScreen>:
name: 'first'
the_time: _id_lbl_time
BoxLayout:
orientation: 'vertical'
Label
id: _id_lbl_time
text: 'Clock'
font_size: 30
BoxLayout:
Button:
text: 'New Here'
font_size: 20
size: 200, 50
size_hint: None, None
on_release: app.root.current = 'second'
<SecondScreen>:
name: 'second'
the_set: _id_lbl_set
BoxLayout:
orientation: 'vertical'
Label:
id: _id_lbl_set
text: 'New Here'
font_size: 30
BoxLayout:
Button:
text: 'Main'
font_size: 20
size: 200, 50
size_hint: None, None
on_release: app.root.current = 'first'
''')
class ScreenManagerApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(FirstScreen(name='first'))
sm.add_widget(SecondScreen(name='second'))
self.first_screen = FirstScreen()
self.sec_screen = SecondScreen()
return sm #<---- I can't return self.first_screen etc here?
def on_start(self):
Clock.schedule_interval(self.first_screen.update_time, 1) # 1 second
Clock.schedule_interval(self.sec_screen.update_text, 2)
ScreenManagerApp().run()
Ja arbeitete - Worth Zugabe für zukünftige Forscher, dass 'Build (Selbst-):' muss 'Rückkehr sm' den Screen zurückzukehren tatsächlich, es zu zeigen. – northwarks
Ja, danke. Bearbeitet ^^ – KeyWeeUsr