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
-
@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)
-
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 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
-
@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? -
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) -
@sodoku ok, I see but which process do you want to undo or redo?
-
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
-
@sodoku do you want multiple successive undo or only the last one?
-
Just the last one should do the trick
-
@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)
-
@cvp
Awesome logic skills dude thanks Iβm learning a lot from you -
@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 -
@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()
-
Wow fantastic, your truly amazing I canβt thank you enough
-
Help me again please
Okay the pawz.pyui only has one TextField and one buttonSo 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)
-
@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 -
Help me again I fixed the 3 ticks thing in the post above
-
@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? -
The pyui is called pawz not pawn
-
So when you type Game Over or Level 1 in the text field in either scenes pawz menu it adds the emojis to scene A and scene B simultaneously