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()

The following error incurred:

Traceback (most recent call last):
       File "d:\Learning App\kivyMD\flash_card_5.py", line 69, in <module>
         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'
Marcelo Paco
  • 2,732
  • 4
  • 9
  • 26

0 Answers0