Seite 1 von 1

[kivy] Dropdown Menü in py-Datei erstellen und in kv-Datei aufrufen

Verfasst: Montag 31. August 2020, 13:47
von dunkelton
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:

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()
und hier mein kv-Code:

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"
Einmal ganz reduziert auf das eigentliche Problem.
Vielen Dank im Voraus für eure Antworten/Hilfe :-)

Re: [kivy] Dropdown Menü in py-Datei erstellen und in kv-Datei aufrufen

Verfasst: Dienstag 27. Oktober 2020, 18:18
von poldi
Ja gut, das ist wohl Geschmacksache, ich habe die Erfahrung gemacht, das es nicht so ganz einfach ist ein Kivy Project zu strukturieren und mit Ordnern zu organisieren, da muss man schon ein wenig kreativ werden. Daher würde ich als Anfänger erstmal alles zusammen belassen und später auseinander ziehen.