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'