main.py
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.lang import Builder #um Kivy Datei zu laden
from kivy.uix.screenmanager import ScreenManager, Screen #mehrere Screens möglich
from kivy.uix.widget import Widget #für Buttons
from kivy.properties import StringProperty #um eine Zahl als String auszugeben(Event-Update)
import time
from kivy.clock import Clock
class CustomButton(Widget):
pass
class MainScreen(Screen):
zeit = StringProperty()
def __init__(self, **kwargs):
super(MainScreen, self).__init__(**kwargs)
Clock.schedule_interval(self.updateZeit, 1)
def updateZeit(self, dt):
self.zeit = time.strftime("%H:%M:%S")
class AnotherScreen(Screen):
i = 0
zahl = StringProperty(str(i))
def zaehlen(self):
if self.zahl == str(0):
self.i = 0
self.i += 1
self.zahl = str(self.i)
class ScreenManagement(ScreenManager):
pass
class MainApp(App):
def __init__(self, **kwargs):
super(MainApp, self).__init__(**kwargs)
Builder.load_file("main.kv")
def build(self):
return ScreenManagement()
if __name__ == "__main__":
MainApp().run()
Alles anzeigen
main.kv
<ScreenManagement>:
MainScreen:
AnotherScreen:
<MainScreen>:
name:"main"
CustomButton:
Button:
on_release: app.root.current = "other"
text: "Next screen"
font_size: 30
pos: root.x, root.y
size: 180, 60
Button:
text: root.zeit
font_size: 40
pos: 100, 200
size: 200, 100
<AnotherScreen>:
name: "other"
CustomButton:
Button:
on_release: app.root.current = "main"
on_press: root.zahl = str(0)
text: "Back home"
font_size: 30
pos: root.x, root.y
size: 180, 60
Button:
font_size: 50
pos: 200, 200
size: 200, 200
text: root.zahl
on_press: root.zaehlen()
Alles anzeigen
Hallo,
ich möchte in meinem Projekt Python3, Kivy und den ScreenManager benutzen. Allerdings stoße ich auf kleinere Probleme.
was der code bisher kann:
-zwischen 2 Screens wechseln
-ein button mit Touchinput erhöhen
-bei einmaligen touchinput wird sich immer die aktuelle Uhrzeit geholt.
ich treffe allerdings auf Probleme, wenn ich eine allgemeine while Schleife oder ähnliches bauen möchte, da ich nicht weiß wo ich sie rein tun sollen? in ScreenManager? würde ganz gerne die Uhr und zukünftig auch andere Events immer aktuell halten (Clock.schedule_interval) ohne ein benötigten Touchinput. Aktuell liegt das Problem darin, dass ich nur mit Touchinput auf die Funktion updateZeit zugreifen kann...
Kann mir wer helfen ?
Danke schonmal vorweg