• Sketo

    @omz Thank you.

    posted in Pythonista read more
  • Sketo

    @technoway WOW that is way more than I expected! Thank you so much for these references. I will dig in.

    posted in Pythonista read more
  • Sketo

    Once I place a TextField on the grid in the .pyui editor, what does the script in the .py file look like to retrieve the text input by the user? An example would be great.

    I understand the action attribute that shows when you place a button on the grid but action does not show on a TextField, so I’m not sure how to make it call a function, like button, or store the user input.

    Any help would be great.

    posted in Pythonista read more
  • Sketo

    @JonB Thank you for responding also. These are both very helpful options.

    posted in Pythonista read more
  • Sketo

    @omz Thank you for responding! This is very helpful.

    posted in Pythonista read more
  • Sketo

    How do I retrieve just the texture of a SpriteNode so that I can compare it to another?

    When I compare sprite1's texture to sprite2's texture it always returns False even though I know they are the same texture.

    I am assuming that I am comparing something other then the textures of sprite1 and sprite2.

    How do I compare the textures so that if both sprites are 'plc:Brown_Block' then it returns True?

    from scene import *
    
    sprite1 = SpriteNode('plc:Brown_Block')
    sprite2 = SpriteNode('plc:Brown_Block')
    
    print(sprite1.texture == sprite2.texture)
    
    False
    

    posted in Pythonista read more
  • Sketo

    It took me a while to figure out how to use a spritesheet but I finally figured it out. I wanted to post a small example that shows how it works. If I had something like this at the beginning when I was looking then I would not have wasted so much time searching and trying to figure it out. As a beginner just starting to understand these ideas, I want to help those like me searching for hours trying to find an example that makes it easy to understand for beginners.
    I hope this helps the next new comer.

    The Rect(?,?,?,?) parameter describes the portion of the texture in unit coordinates, e.g. (0, 0, 0.5, 0.5) would create a texture from the bottom-left quarter of the original texture. (0,0) being the bottom left corner to half of the overall height (.5) of the texture and half of the overall width (.5) of the texture.

    from scene import *
    x,y,xs,ys = 0,0,1,1
    # 🔼 Above sets up the initial subtexture(Rect(x,y,xs,ys)) on line 25 to show the full image until touch_began and touch_ended changes the coordinates of the subtexture to show whatever section you set in touch began.
    
    class MyScene (Scene):
        def setup(self):
            self.background_color = 'black'
            
            self.texture_name = SpriteNode(Texture('test:Mandrill'),
            scale = 2, 
            position = self.size / 2,
            parent = self)
            
        def touch_began(self, touch):
            global x,y,xs,ys #These variables must be referenced as global or they will not be recognized.
            
            x,y,xs,ys = 0,0,.5,1 #This changes the coordinates for update() on line 25 to show a portion of the texture.
        
        def touch_ended(self, touch):
            global x,y,xs,ys #These variables must be referenced as global or they will not be recognized.
            
            x,y,xs,ys = 0,0,1,1 #This changes the coordinates back to show the full image when you stop touching the screen.
            
        def update(self):
            self.texture_name.texture = Texture('test:Mandrill').subtexture(Rect(x,y,xs,ys))
            #This updates the Texture according to the cooridantes set by touch_began (line 17) and touch_ended (line 22).
            
    
    run(MyScene())```
    
    One of the things that was making it hard for me to understand was that after initially setting up the Texture, on line 9, I thought you could simply reference the subtexture() directly like this...
    
    self.texture_name.texture.subtexture = Rect(?,?,?,?) OR self.texture_name.subtexture = Rect(?,?,?,?)
    
    ... but this was not working and it racked my brain for a while. Then I tried this...
    
    self.texture_name.texture = Texture('test:Mandrill').subtexture(Rect(?,?,?,?))
    
    ... and found out that you must set, not just the subtexture, but the Texture and subtexture to the variable (self.texture_name.texture) before it's updated.

    posted in Pythonista read more
  • Sketo

    @omz WOW do I feel dumb. Thank you. I feel terrible for wasting your time for something so small but thank you again.

    posted in Pythonista read more
  • Sketo

    @omz Another question if you don't mind. Update should change from gem_texture[0], in setup, to gem_texture[3], in update(). Its not changing it... is this not possible or am I missing something?

    from scene import *
    
    gem_texture = [
    Texture('plc:Gem_Orange').subtexture(Rect(0,.5,.5,.5)),
    Texture('plc:Gem_Orange').subtexture(Rect(.5,.5,.5,.5)),
    Texture('plc:Gem_Orange').subtexture(Rect(0,0,.5,.5)),
    Texture('plc:Gem_Orange').subtexture(Rect(.5,0,.5,.5)),
    ]
    
    class MyScene (Scene):
        def setup(self):
            self.background_color = 'black'
            self.gem = SpriteNode(gem_texture[0],
            scale = 4,
            position = self.size / 2,
            parent = self)
            
        def touch_began(self, touch):
            pass
            
        def update(self): #Fixed case correction
            # Update should change from gem_texture[0], in setup, to gem_texture[3], in update(). Its not changing it... is this not possible or am I missing something?
            self.gem.texture = gem_texture[3]```

    posted in Pythonista read more

Internal error.

Oops! Looks like something went wrong!