erste Schritte mit kivy

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Teste gerade ein wenig mit kivy rum und habe mir mal einen Button gebaut. Allerdings wenn ich ihn drücke bekomme ich immer die Fehlermeldung:
AttributeError: 'GridLayout' object has no attribute 'click'
Weiß da jemand was?

Code: Alles auswählen

from kivy.app import App
from kivy.lang import Builder

kv = '''
<MainForm>
GridLayout:
    cols:1
    GridLayout:
        cols:2
        rows:3
    Button:
        text: "Beenden" 
        on_press: root.click
'''


class MainForm(App):
    def build(self):
        root = Builder.load_string(kv)
        return root
    def click(self):
        print ('pressed')


if __name__ == '__main__':
    MainForm().run()
Benutzeravatar
Dennis89
User
Beiträge: 1123
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

du brauchst für dein Fenster eine Klasse. Die 'MainForm' nimmt keine Button-Ereignisse entgegen. Damit wird das Hauptprogramm "nur" aufgebaut. Für jedes Fenster in dem etwas passieren soll, musst du eine Klasse erstellen.

Code: Alles auswählen

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget

Builder.load_string('''
<FirstGrid>:
    GridLayout:
        cols:1
        GridLayout:
            cols: 2
            rows: 3
        Button:
            text: "Beenden" 
            on_press: root.click()
''')

class FirstGrid(Widget):
    def click(self):
        print('pressed')


class FirstApp(App):
    def build(self):
        return FirstGrid()



if __name__ == '__main__':
    FirstApp().run()
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ahhhh. Danke ... Damit kann ich dann erstmal rum testen ...
Antworten