[kivy] Dropdown Menü in py-Datei erstellen und in kv-Datei aufrufen
Verfasst: Montag 31. August 2020, 13:47
Hallo zusammen,
ich bin erst kürzlich in die Welt des Codings wirklich eingetaucht und fühle mich in Python sehr wohl
Für mein aktuelles Projekt möchte ich ein GUI mit kivy schreiben. Aktuell scheitere ich allerdings bei der Erstellung eines Dropdown Menüs.
Ich versuche das Dropdown Menü innerhalb einer Screen-Klasse in meiner kv-Datei zu platzieren. Die Punkte/Buttons des Dropdownmenüs erzeuge ich mit einem loop in meiner py-Datei innerhalb der Hauptklasse des Screens. Dieser Loop liegt in einer Funktion innerhalb der Klasse. Mein Gedanke war es nun einen Button in der kv-Datei zu schreiben, der diese Funktion aufruft. Mein Ansatz erzeugt keine Fehlermeldung allerdings funktioniert sie auch nicht ... Ich habe als alternative auch schon überlegt (da das Dropdown-Menü in jedem Screen platziert wird), ob es seine eigene Hauptklasse in der py-Datei kriegt, da weiß ich aber ebenso wenig, wie ich diese richtig in der kv-Datei aufrufe.
Hier ist mein Python Code:
und hier mein kv-Code:
Einmal ganz reduziert auf das eigentliche Problem.
Vielen Dank im Voraus für eure Antworten/Hilfe
ich bin erst kürzlich in die Welt des Codings wirklich eingetaucht und fühle mich in Python sehr wohl

Ich versuche das Dropdown Menü innerhalb einer Screen-Klasse in meiner kv-Datei zu platzieren. Die Punkte/Buttons des Dropdownmenüs erzeuge ich mit einem loop in meiner py-Datei innerhalb der Hauptklasse des Screens. Dieser Loop liegt in einer Funktion innerhalb der Klasse. Mein Gedanke war es nun einen Button in der kv-Datei zu schreiben, der diese Funktion aufruft. Mein Ansatz erzeugt keine Fehlermeldung allerdings funktioniert sie auch nicht ... Ich habe als alternative auch schon überlegt (da das Dropdown-Menü in jedem Screen platziert wird), ob es seine eigene Hauptklasse in der py-Datei kriegt, da weiß ich aber ebenso wenig, wie ich diese richtig in der kv-Datei aufrufe.
Hier ist mein Python Code:
Code: Alles auswählen
# --- --- --- --- --- Import Area --- --- --- --- --- #
from kivy.app import App
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
# --- --- --- --- --- Default Window Size --- --- --- --- --- #
Window.size = (750, 750)
# --- --- --- --- --- Dictionary of given projects --- --- --- --- --- #
projekte_liste = {"ID01": "Project01",
"ID02": "Project02",
"ID03": "Project03",
"ID04": "Project04",
"ID05": "Project05"}
# --- --- --- --- --- Class definition of screens --- --- --- --- --- #
class OverView(Screen):
ProjektDropdown = DropDown()
# --- DropDown Menu function --- #
def dropdown_menu(self):
self.ProjektDropdown = DropDown()
for projekt_id, projekt_name in projekte_liste.items():
btn = Button(text=projekt_id + " - " + projekt_name, size_hint_y=None, height=25)
btn.bind(on_release=lambda btn: self.ProjektDropdown.select(btn.text))
self.ProjektDropdown.add_widget(btn)
# --- --- --- --- --- Class definition of ScreenManager to manage screens (later) --- --- --- --- --- #
class WindowManager(ScreenManager):
pass
# --- --- --- --- --- App class --- --- --- --- --- #
class TestApp(App):
pass
# --- --- --- --- --- Start App! --- --- --- --- --- #
if __name__ == "__main__":
TestApp().run()
Code: Alles auswählen
#:kivy 1.11.1
WindowManager:
OverView:
<OverView>:
name: "overview"
GridLayout:
cols:3
row_force_default: True
row_default_height: 40
height: self.minimum_height
Button:
text:"Projekt auswählen"
on_release: root.dropdown_menu()
Button:
text:"Neues Thema erstellen"
Button:
text:"Info"
Vielen Dank im Voraus für eure Antworten/Hilfe
