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.


    Add emoji behind text

    Pythonista
    4
    40
    11648
    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.
    • sodoku
      sodoku last edited by ccc

      I don’t know if this is possible to do??? but can I add emojis to the label nodes position by typing the current text that is in the label into the pause menus TextField and pushing the button and the pawz.pyui only has one TextField and one button
      The goal is to place an emoji behind both level 1 labels by only typing Level 1 into the TextField once

      from scene import *
      
      class Game (Scene):
              def setup(self):
                  self.background_color = '#004f82'
                  ground = Node(parent=self)
                  x = 0
                  while x <= self.size.w + 64:
                      tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0))
                      ground.add_child(tile)
                      x += 64
                  self.player = SpriteNode('plf:AlienGreen_front')
                  self.player.anchor_point = (0.5, 0)
                  self.player.position = (self.size.w/2, 32)
                  self.add_child(self.player)
              
              self.player = SpriteNode()
              self.player.anchor_point = (0.5, 0)
              self.player.position = (self.size.w/4, 32)
              self.add_child(self.player)
              self.player.color = ('red')
      
              #Label 1
              self.card = LabelNode('Level 1',color=('#0016ff'))
              #self.card = LabelNode((text[0]),color=('#0016ff'))
              self.card.position = (300,760)
              self.add_child(self.card)
              self.card.size = (160,160)
              
              self.card2 = LabelNode('Level 2',color=('#0016ff'))
              self.card2.position = (300,660)
              self.add_child(self.card2)
              self.card2.size = (160,160)
              
              self.card3 = LabelNode('Level 1',color=('#0016ff'))
              self.card3.position = (300,560)
              self.add_child(self.card3)
              self.card3.size = (160,160)
              
              self.card4 = LabelNode('Game Over',color=('#0016ff'))
              self.card4.position = (300,460)
              self.add_child(self.card4)
              self.card4.size = (160,160)
              
      
              #pause symbol
              self.pause_button = SpriteNode('iow:pause_32', position=(32, self.size.h-32), parent=self)
      
          #control pause symbol button
          def touch_ended(self, touch):
              if self.pause_button.frame.contains_point(touch.location):
                  self.v = ui.load_view('pawz.pyui')
                  self.v['button1'].action = self.pawz_button_action
                  self.v.present('sheet')
                  self.v['textfield1'].begin_editing()
                  
          def pawz_button_action(self,sender):
              
              self.v.close()
                  
      if __name__ == '__main__':
          run(Game(), PORTRAIT, show_fps=True)
      
      1 Reply Last reply Reply Quote 0
      • sodoku
        sodoku last edited by sodoku

        Something like if the text in the TextField equals the text in the label node add an emoji behind without deleting the words almost like a highlighting effect

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

          @sodoku try this

          
          from scene import *
          
          class Game (Scene):
          	def setup(self):
          		self.background_color = '#004f82'
          		ground = Node(parent=self)
          		x = 0
          		while x <= self.size.w + 64:
          			tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0))
          			ground.add_child(tile)
          			x += 64
          		self.player = SpriteNode('plf:AlienGreen_front')
          		self.player.anchor_point = (0.5, 0)
          		self.player.position = (self.size.w/2, 32)
          		self.add_child(self.player)
          
          		#Labels
          		self.cards = []
          		y = 760
          		for l in ['Level 1','Level 2','Level 1','Game Over']:
          			card = LabelNode(' ')#,color=('#0016ff'))
          			card.font = ('Menlo',60)
          			card.position = (300,y)
          			card.size = (160,100)
          			self.add_child(card)
          			card_name = LabelNode(l)
          			card_name.font = card.font
          			card_name.size = card.size
          			card.add_child(card_name)
          			self.cards.append(card)
          			y = y - 100
          
          		#pause symbol
          		self.pause_button = SpriteNode('iow:pause_32', position=(32, self.size.h-32), parent=self)
          
          	#control pause symbol button
          	def touch_ended(self, touch):
          		if self.pause_button.frame.contains_point(touch.location):
          			self.v = ui.load_view('pawz.pyui')
          			self.v['button1'].action = self.pawz_button_action
          			self.v.present('sheet')
          			self.v['textfield1'].begin_editing()
          			
          	def pawz_button_action(self,sender):
          		txt = self.v['textfield1'].text
          		for card in self.cards:
          			if card.children[0].text == txt:
          				card.text = '😀'
          		self.v.close()
          			
          if __name__ == '__main__':
          	run(Game(), PORTRAIT, show_fps=True)
          
          
          sodoku 1 Reply Last reply Reply Quote 0
          • sodoku
            sodoku last edited by sodoku

            also Would I be able to add an undo button beside the pause button at the top of the scene screen thanks for the help

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

              @cvp also Would I be able to add an undo button beside the pause button at the top of the scene screen thanks for the help

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

                @sodoku Ok, I'm back. I assume you are able to add the button2 in the UI designer.
                What do you call "undo"'? Just remove the emoji of the previous labels?

                1 Reply Last reply Reply Quote 0
                • sodoku
                  sodoku last edited by

                  I’ve add an undo and redo symbols in the code

                  from scene import *

                  class Game (Scene):
                  def setup(self):
                  self.background_color = '#004f82'
                  ground = Node(parent=self)
                  x = 0
                  while x <= self.size.w + 64:
                  tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0))
                  ground.add_child(tile)
                  x += 64
                  self.player = SpriteNode('plf:AlienGreen_front')
                  self.player.anchor_point = (0.5, 0)
                  self.player.position = (self.size.w/2, 32)
                  self.add_child(self.player)

                      #Labels
                      self.cards = []
                      y = 760
                      for l in ['Level 1','Level 2','Level 1','Game Over']:
                          card = LabelNode(' ')#,color=('#0016ff'))
                          card.font = ('Menlo',60)
                          card.position = (300,y)
                          card.size = (160,100)
                          self.add_child(card)
                          card_name = LabelNode(l)
                          card_name.font = card.font
                          card_name.size = card.size
                          card.add_child(card_name)
                          self.cards.append(card)
                          y = y - 100
                  
                      #pause symbol
                      self.pause_button = SpriteNode('iow:pause_32', position=(32, self.size.h-32), parent=self)
                  
                      #undo symbol
                      self.undo_button = SpriteNode('iow:reply_256', position=(90, self.size.h-31), parent=self)
                      self.undo_button.size = (50,50)
                      
                      #redo symbol
                      self.redo_button = SpriteNode('iow:refresh_24', position=(160, self.size.h-31), parent=self)
                      self.redo_button.size = (50,50)
                      
                      
                  #control pause symbol button
                  def touch_ended(self, touch):
                      if self.pause_button.frame.contains_point(touch.location):
                          self.v = ui.load_view('pawz.pyui')
                          self.v['button1'].action = self.pawz_button_action
                          self.v.present('sheet')
                          self.v['textfield1'].begin_editing()
                          
                  def pawz_button_action(self,sender):
                      txt = self.v['textfield1'].text
                      for card in self.cards:
                          if card.children[0].text == txt:
                              card.text = '😀'
                      self.v.close()
                  

                  if name == 'main':
                  run(Game(), PORTRAIT, show_fps=True)

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

                    @sodoku ok, I see but which process do you want to undo or redo?

                    1 Reply Last reply Reply Quote 0
                    • sodoku
                      sodoku last edited by sodoku

                      After I’ve added an emoji with the button inside the pause menu then I would like to undo add emoji and then redo add emoji Incase I’ve made mistakes

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

                        @sodoku do you want multiple successive undo or only the last one?

                        sodoku 1 Reply Last reply Reply Quote 0
                        • sodoku
                          sodoku last edited by

                          Just the last one should do the trick

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

                            @sodoku Sorry, but while I was waiting for your answer, I wrote this code, supporting successive undo/redo

                            from scene import *
                            
                            class Game (Scene):
                            	def setup(self):
                            		self.background_color = '#004f82'
                            		ground = Node(parent=self)
                            		x = 0
                            		while x <= self.size.w + 64:
                            			tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0))
                            			ground.add_child(tile)
                            			x += 64
                            		self.player = SpriteNode('plf:AlienGreen_front')
                            		self.player.anchor_point = (0.5, 0)
                            		self.player.position = (self.size.w/2, 32)
                            		self.add_child(self.player)
                            
                            		#Labels
                            		self.evol = []
                            		self.cards = []
                            		y = 760
                            		evol = []
                            		for l in ['Level 1','Level 2','Level 1','Game Over']:
                            			card = LabelNode(' ')#,color=('#0016ff'))
                            			card.font = ('Menlo',60)
                            			card.position = (300,y)
                            			card.size = (160,100)
                            			self.add_child(card)
                            			card_name = LabelNode(l)
                            			card_name.font = card.font
                            			card_name.size = card.size
                            			card.add_child(card_name)
                            			self.cards.append(card)
                            			evol.append((l,card.text))
                            			y = y - 100
                            		self.evol.append(evol)
                            		self.current_evol = 0
                            
                            		#pause symbol
                            		self.pause_button = SpriteNode('iow:pause_32', position=(32, self.size.h-32), parent=self)
                            		
                            		#undo symbol
                            		self.undo_button = SpriteNode('iow:reply_256', position=(90, self.size.h-31), parent=self)
                            		self.undo_button.size = (50,50)
                            		
                            		#redo symbol
                            		self.redo_button = SpriteNode('iow:refresh_24', position=(160, self.size.h-31), parent=self)
                            		self.redo_button.size = (50,50)
                            
                            	#control pause symbol button
                            	def touch_ended(self, touch):
                            		if self.pause_button.frame.contains_point(touch.location):
                            			self.v = ui.load_view('pawz.pyui')
                            			self.v['button1'].action = self.pawz_button_action
                            			self.v.present('sheet')
                            			self.v['textfield1'].begin_editing()
                            		elif self.undo_button.frame.contains_point(touch.location):
                            			if self.current_evol > 0:
                            				self.current_evol -= 1
                            				evol = self.evol[self.current_evol]
                            				#print('undo',self.current_evol,evol)
                            				for e in evol:
                            					txt = e[0]
                            					for card in self.cards:
                            						if card.children[0].text == txt:
                            							card.text = e[1]
                            		elif self.redo_button.frame.contains_point(touch.location):
                            			if self.current_evol < (len(self.evol)-1):
                            				self.current_evol += 1
                            				evol = self.evol[self.current_evol]
                            				#print('redo',self.current_evol,evol)
                            				for e in evol:
                            					txt = e[0]
                            					for card in self.cards:
                            						if card.children[0].text == txt:
                            							card.text = e[1]
                            			
                            	def pawz_button_action(self,sender):
                            		# pause button
                            		txt = self.v['textfield1'].text
                            		evol = []
                            		for card in self.cards:
                            			if card.children[0].text == txt:
                            				card.text = '😀'
                            			else:
                            				card.text = ' '
                            			evol.append((card.children[0].text,card.text))
                            		self.evol.append(evol)
                            		self.current_evol = len(self.evol) - 1
                            		self.v.close()
                            		
                            		
                            if __name__ == '__main__':
                            	run(Game(), PORTRAIT, show_fps=True)
                            
                            
                            sodoku 1 Reply Last reply Reply Quote 0
                            • sodoku
                              sodoku @cvp last edited by

                              @cvp
                              Awesome logic skills dude thanks I’m learning a lot from you

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

                                @cvp is it possible not to erase the emoji when you add more then one
                                For example if I add emojis to Level 1 then if I add an emoji to Game Over without deleting the Level 1 emojis so all three are covered??or all four can be covered
                                This aspect worked in the previous version you coded before the undo redo upgrade

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

                                  @sodoku yes, of course, sorry. Two lines to comment

                                  	def pawz_button_action(self,sender):
                                  		# pause button
                                  		txt = self.v['textfield1'].text
                                  		evol = []
                                  		for card in self.cards:
                                  			if card.children[0].text == txt:
                                  				card.text = '😀'
                                  			#else:
                                  			#	card.text = ' '
                                  			evol.append((card.children[0].text,card.text))
                                  		self.evol.append(evol)
                                  		self.current_evol = len(self.evol) - 1
                                  		self.v.close() 
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • sodoku
                                    sodoku last edited by

                                    Wow fantastic, your truly amazing I can’t thank you enough

                                    1 Reply Last reply Reply Quote 0
                                    • sodoku
                                      sodoku last edited by sodoku

                                      Help me again please
                                      Okay the pawz.pyui only has one TextField and one button

                                      So what I need help with is, I wanted to be able to is input the emoji into scene A and scene B without having to manually go to each scene and adding the emoji twice

                                      So the objective is, if I add the emoji behind the text in scene B it would be automatically added behind the text in scene A and vice versa if I add the emoji behind the text in scene A it would automatically be added behind the text in scene B

                                      from scene import *
                                      import ui
                                      #import time
                                      import scene
                                      import console
                                      
                                      
                                      class MainMenuScene (Scene):
                                      	def setup(self):
                                      		self.background = SpriteNode(color = 'blue')
                                      		self.background.size = self.size
                                      		self.background.position = self.size / 2
                                      		self.add_child(self.background)
                                      		
                                      		self.page1=LabelNode('page1')
                                      		self.page1.size=(75,75)
                                      		self.page1.position=(44,860)
                                      		self.add_child(self.page1)
                                      		
                                      		self.page2=LabelNode('page2')
                                      		self.page2.size=(75,75)
                                      		self.page2.position=(44,760)
                                      		self.add_child(self.page2)
                                      		
                                      	def touch_began(self, touch):
                                      		if self.page1.frame.contains_point(touch.location):
                                      			self.present_modal_scene(a_scene)
                                      			
                                      		elif self.page2.frame.contains_point(touch.location):
                                      			self.present_modal_scene(b_scene)
                                      
                                      
                                      #class Game (Scene):
                                      class AScene (Scene):
                                          def setup(self):
                                              
                                              self.background = SpriteNode(color = 'red')
                                              self.background.size = self.size
                                              self.background.position = self.size / 2
                                              self.add_child(self.background)
                                              
                                              self.main=LabelNode('main')
                                              self.main.size=(75,75)
                                              self.main.position=(44,860)
                                              self.add_child(self.main)
                                              
                                              self.background_color = '#004f82'
                                              ground = Node(parent=self)
                                              x = 0
                                              while x <= self.size.w + 64:
                                                  tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0))
                                                  ground.add_child(tile)
                                                  x += 64
                                              self.player = SpriteNode('plf:AlienGreen_front')
                                              self.player.anchor_point = (0.5, 0)
                                              self.player.position = (self.size.w/2, 32)
                                              self.add_child(self.player)
                                      
                                              #Labels
                                              self.evol = []
                                              self.cards = []
                                              y = 760
                                              evol = []
                                              for l in ['Level 1','Level 2','Level 1','Game Over']:
                                                  card = LabelNode(' ')#,color=('#0016ff'))
                                                  card.font = ('Menlo',60)
                                                  card.position = (300,y)
                                                  card.size = (160,100)
                                                  self.add_child(card)
                                                  card_name = LabelNode(l)
                                                  card_name.font = card.font
                                                  card_name.size = card.size
                                                  card.add_child(card_name)
                                                  self.cards.append(card)
                                                  evol.append((l,card.text))
                                                  y = y - 100
                                              self.evol.append(evol)
                                              self.current_evol = 0
                                      
                                              #pause symbol
                                              self.pause_button = SpriteNode('iow:pause_32', position=(32, self.size.h-32), parent=self)
                                              
                                              #undo symbol
                                              self.undo_button = SpriteNode('iow:reply_256', position=(90, self.size.h-31), parent=self)
                                              self.undo_button.size = (50,50)
                                              
                                              #redo symbol
                                              self.redo_button = SpriteNode('iow:refresh_24', position=(160, self.size.h-31), parent=self)
                                              self.redo_button.size = (50,50)
                                      
                                          #control pause symbol button
                                          def touch_ended(self, touch):
                                              if self.pause_button.frame.contains_point(touch.location):
                                                  self.v = ui.load_view('pawz.pyui')
                                                  self.v['button1'].action = self.pawz_button_action
                                                  self.v.present('sheet')
                                                  self.v['textfield1'].begin_editing()
                                              elif self.undo_button.frame.contains_point(touch.location):
                                                  if self.current_evol > 0:
                                                      self.current_evol -= 1
                                                      evol = self.evol[self.current_evol]
                                                      #print('undo',self.current_evol,evol)
                                                      for e in evol:
                                                          txt = e[0]
                                                          for card in self.cards:
                                                              if card.children[0].text == txt:
                                                                  card.text = e[1]
                                              elif self.redo_button.frame.contains_point(touch.location):
                                                  if self.current_evol < (len(self.evol)-1):
                                                      self.current_evol += 1
                                                      evol = self.evol[self.current_evol]
                                                      #print('redo',self.current_evol,evol)
                                                      for e in evol:
                                                          txt = e[0]
                                                          for card in self.cards:
                                                              if card.children[0].text == txt:
                                                                  card.text = e[1]
                                                  
                                          def pawz_button_action(self,sender):
                                              # pause button
                                              txt = self.v['textfield1'].text
                                              evol = []
                                              for card in self.cards:
                                                  if card.children[0].text == txt:
                                                      card.text = '😀'
                                                  #else:
                                                      #card.text = ' '
                                                  evol.append((card.children[0].text,card.text))
                                              self.evol.append(evol)
                                              self.current_evol = len(self.evol) - 1
                                              self.v.close()
                                              
                                              
                                          def touch_began(self, touch):
                                              if self.main.frame.contains_point(touch.location):
                                                  self.dismiss_modal_scene()
                                      
                                      class BScene (Scene):
                                          def setup(self):
                                              
                                              self.background = SpriteNode(color = '#71edff')
                                              self.background.size = self.size
                                              self.background.position = self.size / 2
                                              self.add_child(self.background)
                                              
                                              self.main=LabelNode('main')
                                              self.main.size=(75,75)
                                              self.main.position=(44,760)
                                              self.add_child(self.main)
                                              
                                              self.background_color = '#004f82'
                                              ground = Node(parent=self)
                                              x = 0
                                              while x <= self.size.w + 64:
                                                  tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0))
                                                  ground.add_child(tile)
                                                  x += 64
                                              self.player = SpriteNode('plf:AlienGreen_front')
                                              self.player.anchor_point = (0.5, 0)
                                              self.player.position = (self.size.w/2, 32)
                                              self.add_child(self.player)
                                      
                                              #Labels
                                              self.evol = []
                                              self.cards = []
                                              y = 760
                                              evol = []
                                              for l in ['Level 1','Level 2','Level 1','Game Over']:
                                                  card = LabelNode(' ')#,color=('#0016ff'))
                                                  card.font = ('Menlo',60)
                                                  card.position = (300,y)
                                                  card.size = (160,100)
                                                  self.add_child(card)
                                                  card_name = LabelNode(l)
                                                  card_name.font = card.font
                                                  card_name.size = card.size
                                                  card.add_child(card_name)
                                                  self.cards.append(card)
                                                  evol.append((l,card.text))
                                                  y = y - 100
                                              self.evol.append(evol)
                                              self.current_evol = 0
                                      
                                              #pause symbol
                                              self.pause_button = SpriteNode('iow:pause_32', position=(32, self.size.h-32), parent=self)
                                              
                                              #undo symbol
                                              self.undo_button = SpriteNode('iow:reply_256', position=(90, self.size.h-31), parent=self)
                                              self.undo_button.size = (50,50)
                                              
                                              #redo symbol
                                              self.redo_button = SpriteNode('iow:refresh_24', position=(160, self.size.h-31), parent=self)
                                              self.redo_button.size = (50,50)
                                      
                                          #control pause symbol button
                                          def touch_ended(self, touch):
                                              if self.pause_button.frame.contains_point(touch.location):
                                                  self.v = ui.load_view('pawz.pyui')
                                                  self.v['button1'].action = self.pawz_button_action
                                                  self.v.present('sheet')
                                                  self.v['textfield1'].begin_editing()
                                              elif self.undo_button.frame.contains_point(touch.location):
                                                  if self.current_evol > 0:
                                                      self.current_evol -= 1
                                                      evol = self.evol[self.current_evol]
                                                      #print('undo',self.current_evol,evol)
                                                      for e in evol:
                                                          txt = e[0]
                                                          for card in self.cards:
                                                              if card.children[0].text == txt:
                                                                  card.text = e[1]
                                              elif self.redo_button.frame.contains_point(touch.location):
                                                  if self.current_evol < (len(self.evol)-1):
                                                      self.current_evol += 1
                                                      evol = self.evol[self.current_evol]
                                                      #print('redo',self.current_evol,evol)
                                                      for e in evol:
                                                          txt = e[0]
                                                          for card in self.cards:
                                                              if card.children[0].text == txt:
                                                                  card.text = e[1]
                                                  
                                          def pawz_button_action(self,sender):
                                              # pause button
                                              txt = self.v['textfield1'].text
                                              evol = []
                                              for card in self.cards:
                                                  if card.children[0].text == txt:
                                                      card.text = '😀'
                                                  #else:
                                                      #card.text = ' '
                                                  evol.append((card.children[0].text,card.text))
                                              self.evol.append(evol)
                                              self.current_evol = len(self.evol) - 1
                                              self.v.close()
                                              
                                              
                                          def touch_began(self, touch):
                                              if self.main.frame.contains_point(touch.location):
                                                  self.dismiss_modal_scene()
                                      
                                          
                                      main_menu_scene = MainMenuScene()
                                      a_scene = AScene()
                                      b_scene = BScene()
                                      
                                      main_view = ui.View()
                                      scene_view = SceneView(frame=main_view.bounds, flex='WH')
                                      main_view.add_subview(scene_view)
                                      scene_view.scene = main_menu_scene
                                      main_view.present(hide_title_bar=True, animated=False)
                                      
                                      cvp 1 Reply Last reply Reply Quote 0
                                      • cvp
                                        cvp @sodoku last edited by cvp

                                        @sodoku first, t o be able to help you, we need your script correctly indented by putting
                                        3 back ticks above and bottom ```
                                        You have used bad apostrophes

                                        1 Reply Last reply Reply Quote 0
                                        • sodoku
                                          sodoku last edited by sodoku

                                          Help me again I fixed the 3 ticks thing in the post above

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

                                            @sodoku I've copied your script in my Pythonista and created a pawn.pyui with a button and a TextField.
                                            This is presented when I tap pause but I really don't understand your request.
                                            Where do you want to store/show the text you type in the TextField?

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