Ich habe vor ungefähr einem Monat mit dem Programmieren angefangen. An sich läuft es gut. Ich Google mir zwar nach jeden 5 Zeilen Code die Finger Blutig aber an sich läuft es. Ich bin seit 2 Tagen an einem Problem dran. Ich Lese aus einer Datenbank (firebase) Daten aus und Wandel diese in eine Liste um. Nun würde ich gerne diese Daten in Labels umwandeln und automatisch diese Labels Erstellen lassen mit einer FOR schleife.
Ich benutze ein Screenmanager der in die KV Datei schaut und dort dann die einzelnen Screen abgreift. Der Button Login (loginbtn2) wechselt in den Screen per app.root.current = "UserMenu" (so wie im Tutorial und das funktioniert auch gut). Dannach erscheinen aber keine Bildschirme. Ich weiß auch gar nicht wie ich die Button an den UserMenu Screen übergeben soll. Ich habe sowas gegoggelt wie "Kivy Creat Label with For Loop".
So sollte es aussehen
Daten:
[('Gname', 'Hans Hans'), ('User_UID', 'test123')]
FORSCHLEIFE:
(GESUCHT)
Ergebniss:
[Gname] [HANS HANS]
[User_UID] [Test123]
usw...
Code: Alles auswählen
class LoginWindow(Screen):
def loginbtn(self):
login = auth.sign_in_with_email_and_password(self.email2, self.password2)
try:
self.token = auth.current_user["localId"]
(self.token)
UserMenu().usm(self.token)
except:
pass
class UserMenu(Screen):
def usm(self, uid1, ):
uid = uid1
docs = db.collection("Benchmark").where("User_UID", "==", uid)\
.get()
for doc in docs:
d = doc.to_dict()
t = list(d.items())
print(t)
.....
......
class StartPrApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(LoginWindow(name='LoginWindow'))
sm.add_widget(RegWindow(name='RegWindow'))
sm.add_widget(UserMenu(name="UserMenu"))
return sm
if __name__ == "__main__":
StartPrApp().run()
Code: Alles auswählen
<LoginWindow>
name: "LoginWindow"
email2: email2.text
password2: password2.text
GridLayout:
cols:1
size: root.width, root.height
GridLayout
cols:2
Label:
id: l3
text:"Email eingeben"
TextInput:
id:email2
multiline:False
Label:
id: l4
text:"Bitte Passwort eingeben"
TextInput:
id:password2
multiline:False
password:True
Button:
id:btn2
text: "Login"
size_hint: (.5 , .5)
on_release:
root.manager.transition.direction = 'left'
root.loginbtn()
app.root.current = "UserMenu"
Button:
id:btn3
text: "Regestrieren"
size_hint: (.3 , .5)
on_release:
root.manager.transition.direction = 'left'
app.root.current = "RegWindow"
.....
<UserMenu>
id: "UserMenu"
GridLayout:
id:"gridum"
size: root.width, root.height
cols:2
Meine Fragen:
-Ich habe gelesen das man in der KV nur das design erstellen soll. Aber in jedem Tutorial ballern sie Button,Label,... rein. Gibt es eine Möglichkeit z.b. nur das Aussehen( Gridlayout ) zu beschreiben um dann die Labels in der .py datei zu erstellen und auf die Grid ID zu verweisen? Wie funktioniert das? (ich habe nichts auf Google gefunden). Ich glaube ich habe nach den Falschen Begrifflichkeiten gesucht.
- Kann ich Labels über die FOR Schleife erstellen?`
-Wie lasse ich die Labels dann in meinem UserMenu Screen erscheinen? Wie verweise ich darauf das die Labels im UserMenu Screen erstellt werden.
Ich bin noch am Lernen bin also für jeden Tipp oder Verbesserung dankbar
Grüße Apfelmann