omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Weird error when script is run from homescreen.

    Pythonista
    execution exception error
    2
    3
    2177
    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.
    • FrankenApps
      FrankenApps last edited by ccc

      import ui, sound
      
      #sound.set_honors_silent_switch(False) #maybe for production
      
      class ButtonWrapper(ui.View):
      	
      	def touch_began(self, touch):
      		imageName = self.subviews[0].path
      		imageName = imageName[12:][:-7]
      		imageName = 'res/buttons/' + imageName +'on.png'
      		self.subviews[0].image = ui.Image.named(imageName).with_rendering_mode(ui.RENDERING_MODE_ORIGINAL)
      		self.subviews[0].path = imageName
      		sound.play_effect(self.subviews[0].name)
      		
      	def touch_ended(self, touch):
      		imageName = self.subviews[0].path
      		imageName = imageName[12:][:-6]
      		imageName = 'res/buttons/' + imageName +'off.png'
      		self.subviews[0].image = ui.Image.named(imageName).with_rendering_mode(ui.RENDERING_MODE_ORIGINAL)
      		self.subviews[0].path = imageName
      		
      
      v = ui.load_view()
      
      v.present(style = 'full_screen', orientations = ['portrait'],title_bar_color='#222222', hide_title_bar=True) #In order to exit swipe down with two fingers
      

      So I have a Script, that is supposed to change a background picture of a button while it is pressed.
      I have stored the pictures in "res/buttons/" where one is for example called "orangeoff.png" and one is called "orangeon.png". With the above code I can achieve what I want.
      However when I add the Script to the homescreen to run it from there I get the following exception most of the time:

      Traceback (most recent call last):
        File "/private/var/mobile/Containers/Shared/AppGroup/C1A7CE9F-6A30-4CA8-9380-76FD1CACD07F/Pythonista3/Documents/main.py", line 19, in touch_ended
          self.subviews[0].image = ui.Image.named(imageName).with_rendering_mode(ui.RENDERING_MODE_ORIGINAL)
      AttributeError: 'NoneType' object has no attribute 'with_rendering_mode'
      

      When I hit the back button on the left top, and basically reload the view, everything works as expected again. Does anybody have an idea, why this might happen, and how to prevent it?

      For clarification, this is my .pyui file (the view above the button is only needed to prevent the touch effect):

      [
        {
          "nodes" : [
            {
              "nodes" : [
                {
                  "nodes" : [
      
                  ],
                  "frame" : "{{0, 0}, {240, 247}}",
                  "class" : "View",
                  "attributes" : {
                    "frame" : "{{46, 2}, {100, 100}}",
                    "class" : "View",
                    "name" : "view1",
                    "uuid" : "02ECED66-9D85-4C76-94DC-0FBB760E6596"
                  },
                  "selected" : false
                },
                {
                  "nodes" : [
      
                  ],
                  "frame" : "{{0, 0}, {240, 247}}",
                  "class" : "Button",
                  "attributes" : {
                    "action" : "",
                    "frame" : "{{10, 34}, {80, 32}}",
                    "title" : "",
                    "uuid" : "350C205C-A1B2-41CA-B6ED-EA120173BF4C",
                    "class" : "Button",
                    "custom_attributes" : "{'image':ui.Image.named('res\/buttons\/blueoff.png'). with_rendering_mode(ui.RENDERING_MODE_ORIGINAL), 'path': 'res\/buttons\/blueoff.png'}",
                    "font_size" : 15,
                    "name" : "res\/sounds\/intro.mp3"
                  },
                  "selected" : false
                }
              ],
              "frame" : "{{0, 0}, {240, 240}}",
              "class" : "View",
              "attributes" : {
                "uuid" : "C5101DD7-0CBA-448A-8BC8-34F0CF0347B3",
                "frame" : "{{110, 950}, {100, 100}}",
                "class" : "View",
                "name" : "view1",
                "custom_class" : "ButtonWrapper"
              },
              "selected" : false
            }
          ],
          "frame" : "{{0, 0}, {240, 240}}",
          "class" : "View",
          "attributes" : {
            "name" : "",
            "enabled" : true,
            "background_color" : "RGBA(1.000000,1.000000,1.000000,1.000000)",
            "tint_color" : "RGBA(0.000000,0.478000,1.000000,1.000000)",
            "border_color" : "RGBA(0.000000,0.000000,0.000000,1.000000)",
            "flex" : ""
          },
          "selected" : false
        }
      ]
      
      cvp 1 Reply Last reply Reply Quote 0
      • cvp
        cvp @FrankenApps last edited by cvp

        @FrankenApps Try

        imageName = os.path.expanduser('~/Documents/res/buttons/' + imageName +'on.png')
        

        Current directory is not the same when run from home screen

        FrankenApps 1 Reply Last reply Reply Quote 0
        • FrankenApps
          FrankenApps @cvp last edited by

          @cvp
          Thank you very much!

          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Powered by NodeBB Forums | Contributors