🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Python script runs successfully in Thonny but returns NameError: name 'Snowflake' isn't defined if run from app list

    Scheduled Pinned Locked Moved General
    2 Posts 2 Posters 2.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G Offline
      Genio
      last edited by Genio

      I created this simple app to play with animations

      import M5
      import random
      
      class Snowflake:
          def __init__(self):
              self.MAX_WIDTH = 320
              self.MAX_HEIGHT = 240
              self.radius = random.randint(2, 4)
              self.velocity = random.randint(2, 5)
              self.x = random.randint(0, self.MAX_WIDTH)
              self.y = random.randint(0, self.MAX_HEIGHT)
          
          def fall(self):
              self.y += self.velocity
              if self.y > self.MAX_HEIGHT:
                  self._reset()
          
          def _reset(self):
              self.radius = random.randint(2, 4)
              self.velocity = random.randint(2, 5)
              self.x = random.randint(0, self.MAX_WIDTH)
              self.y = 2
      
      def setup():
          global SNOWFLAKES_COUNT
          global snow
          global circles
          
          SNOWFLAKES_COUNT = 80
          snow=[]
          circles=[]
          
          M5.begin()
          M5.Widgets.fillScreen(0x66b8f7)    
          for _ in range(SNOWFLAKES_COUNT):
              snow.append(Snowflake())
              circles.append(M5.Widgets.Circle(0, 0, 0, 0xffffff, 0xffffff))
      
      def loop():
          M5.update()
          head = M5.Widgets.Circle(160, 144, 25, 0xffffff, 0xffffff)
          body = M5.Widgets.Circle(160, 199, 39, 0xffffff, 0xffffff)
          nose = M5.Widgets.Triangle(161, 143, 122, 150, 161, 148, 0xEA6511, 0xEA6511)
          left_eye = M5.Widgets.Circle(152, 135, 2, 0x000000, 0x000000)
          right_eye = M5.Widgets.Circle(167, 135, 2, 0x000000, 0x000000)
          for index, s in enumerate(snow):
              s.fall()
              c = circles[index]
              c.setRadius(r=s.radius)
              c.setCursor(x=s.x, y=s.y)
      
      if __name__ == '__main__':
        try:
          setup()
          while True:
            loop()
        except (Exception, KeyboardInterrupt) as e:
          try:
            from utility import print_error_msg
            print_error_msg(e)
          except ImportError:
            print("please update to latest firmware")
      

      If i run this code from Thonny pressing the run button it works, but if i run it from the the app list, i get this error:

      MPY: soft reboot
             _  __ _               
       _   _(_)/ _| | _____      __
      | | | | | |_| |/ _ \ \ /\ / /
      | |_| | |  _| | (_) \ V  V / 
       \__,_|_|_| |_|\___/ \_/\_/  2.0.3
      
      _click_event_handler
      _click_event_handler
      Traceback (most recent call last):
        File "apps/snowman.py", line 60, in <module>
        File "apps/snowman.py", line 40, in setup
      NameError: name 'Snowflake' isn't defined
      
      MicroPython v1.22.0-dirty on 2024-03-21; M5STACK Core2 with ESP32(SPIRAM)
      Type "help()" for more information.
      

      Anyone knows the cause of this error and how to resolve it?

      H 1 Reply Last reply Reply Quote 0
      • H Offline
        h12616 @Genio
        last edited by

        @Genio Hi I hope you have resolved this issue! would you please share how you handle this error in the end?

        1 Reply Last reply Reply Quote 0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        • First post
          Last post