0

I have deployed ChatGPT to create a KivymD flashcard. However, the flashcard is unable to execute when I click the start button.

from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.properties import ObjectProperty
import random

class FlashCardApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "DeepPurple"
        sm = ScreenManager()
        sm.add_widget(MainScreen(name="main"))
        sm.add_widget(FlashcardScreen(name="flashcard"))
        return sm

class MainScreen(Screen):
    pass

class FlashcardScreen(Screen):
    pass

class FlashcardScreen(Screen):
    front_label = ObjectProperty(None)
    back_label = ObjectProperty(None)
    card_index = 0
    cards = [
        {"front": "Front of Card 1", "back": "Back of Card 1"},
        {"front": "Front of Card 2", "back": "Back of Card 2"},
        {"front": "Front of Card 3", "back": "Back of Card 3"}
    ]
    def on_enter(self, *args):
        self.shuffle_cards()
        self.show_card()

    def shuffle_cards(self):
        random.shuffle(self.cards)

    def show_card(self):
        self.front_label.text = self.cards[self.card_index]["front"]
        self.back_label.text = self.cards[self.card_index]["back"]

    def flip_card(self):
        self.front_label.text, self.back_label.text = self.back_label.text, self.front_label.text

    def next_card(self):
        self.card_index = (self.card_index + 1) % len(self.cards)
        self.show_card()

Builder.load_string("""
<MainScreen>:
    MDRaisedButton:
        text: "Start"
        on_release: app.root.current = "flashcard"
        pos_hint: {"center_x": 0.5, "center_y": 0.5}

<FlashcardScreen>:
    MDLabel:
        text: "Front of Card"
        font_style: "H4"
        halign: "center"
        pos_hint: {"center_x": 0.5, "center_y": 0.7}
    MDLabel:
        text: "Back of Card"
        font_style: "H4"
        halign: "center"
        pos_hint: {"center_x": 0.5, "center_y": 0.3}
""")

if __name__ == '__main__':
    FlashCardApp().run()

Traceback (most recent call last): File "d:\Learning App\kivyMD\flash_card_5.py", line 69, in FlashCardApp().run() File "D:\Learning App\kivyMD\venv\lib\site-packages\kivy\app.py", line 955, in run runTouchApp() self.dispatch('on_complete', widget) File "kivy_event.pyx", line 727, in kivy._event.EventDispatcher.dispatch File "kivy_event.pyx", line 1307, in kivy._event.EventObservers.dispatch File "kivy_event.pyx", line 1231, in kivy._event.EventObservers._dispatch File "D:\Learning App\kivyMD\venv\lib\site-packages\kivy\uix\screenmanager.py", line 419, in _on_complete self.screen_in.dispatch('on_enter') File "kivy_event.pyx", line 731, in kivy._event.EventDispatcher.dispatch File "d:\Learning App\kivyMD\flash_card_5.py", line 32, in on_enter self.show_card() File "d:\Learning App\kivyMD\flash_card_5.py", line 38, in show_card self.front_label.text = self.cards[self.card_index]["front"] AttributeError: 'NoneType' object has no attribute 'text'

Loh Boon How
  • 123
  • 7

0 Answers0