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.


    Keyboard ui button.

    Pythonista
    2
    55
    23687
    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.
    • cvp
      cvp @shinya.ta last edited by cvp

      @shinya.ta If I correctly understood, try this at the end of your script (if based on mine)

      def nextSet(sender):
      	i_set = sender.i_set + 1
      	if i_set == sender.n_sets:
      		i_set = 0
      	#attach our accessory to the textfield, and textview
      	ww = vv_array[i_set]
      	tvo = tv.objc_instance
      	#print(dir(tvo))
      	tvo.setInputAccessoryView_(ObjCInstance(ww))
      	tvo.reloadInputViews()
      
      #create normal keys
      d = 32
      dd = 4
      emojis = '๐Ÿ˜Š๐Ÿ˜œ๐Ÿ˜ฑ๐Ÿ’ฆโ˜”๏ธ๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃโ˜บ๏ธ๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿคฉ๐Ÿฅณ๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ'
      n_sets = 4
      vv_array = []
      for i_set in range(0,n_sets):
      	l = int(len(emojis)/n_sets)
      	i = i_set * l
      	set_emojis = emojis[i:i+l] + 'โฉ'
      	w, h = ui.get_screen_size()	
      	vv = ui.View(name='set'+str(i_set))
      	vv.background_color = 'lightgray'
      	h = 0
      	x = dd
      	y = dd
      	for button_title in set_emojis:
      		b = ui.Button(title=button_title)
      		if button_title == 'โฉ':
      			b_action = nextSet
      			b.i_set = i_set
      			b.n_sets = n_sets
      			b.name = 'nextSet'
      		else:
      			b_action = typeChar
      		b.action=b_action
      		b.frame = (x,y,d,d)
      		b.font = ('.SFUIText', d)
      		if (y+d+dd) > h:
      			h = y + d + dd
      		vv.add_subview(b)
      		x = x + d + dd
      		if (x+d+dd) > w:
      			x = dd
      			y = y + d + dd
      	vv.frame = (0,0,w,h)
      	vv_array.append(vv)
      
      i_set = 0
      nextSet(vv_array[n_sets-1]['nextSet'])	# display 1st set
      
      v.present('sheet')
      tv.selected_range = (0,0)
      tv.begin_editing()
      

      shinya.ta 1 Reply Last reply Reply Quote 0
      • shinya.ta
        shinya.ta @cvp last edited by

        @cvp

        It's a little different from what I was thinking, but that's a good idea.

        b_action = typeChar

        Here is a name error.
        Why?

        cvp 2 Replies Last reply Reply Quote 0
        • cvp
          cvp @shinya.ta last edited by

          @shinya.ta It was the action of my old script

          def typeChar(sender):
          	'''finds active textinput, and types the button's title'''
          	tf=sender.objc_instance.firstResponder()
          	tf.insertText_(sender.title)
          

          But I don't know what your script became....

          1 Reply Last reply Reply Quote 0
          • cvp
            cvp @shinya.ta last edited by cvp

            @shinya.ta And it is only an example of what you could do. You could have any button with the title or image you want to display next set of emojis.

            shinya.ta 2 Replies Last reply Reply Quote 0
            • shinya.ta
              shinya.ta @cvp last edited by

              @cvp

              Dear.cvp

              I'll try it again.

              1 Reply Last reply Reply Quote 0
              • shinya.ta
                shinya.ta @cvp last edited by

                @cvp

                It was successful.

                I want to use this application vertically, so I hope the display of emoji is less.

                How can I adjust the number of emoji?

                cvp 2 Replies Last reply Reply Quote 0
                • cvp
                  cvp @shinya.ta last edited by cvp

                  @shinya.ta Hello
                  The n_sets sets the number of sets
                  You could set the number of emojis you want per set and then compute the number of sets

                  n_emojis_in_set = 20
                  n_sets = 1 + int((len(emojis)-1)/n_emojis_in_set)
                  

                  1 Reply Last reply Reply Quote 0
                  • cvp
                    cvp @shinya.ta last edited by

                    @shinya.ta please let me know if it is ok and if you want to put the "next set" button at another place

                    shinya.ta 2 Replies Last reply Reply Quote 0
                    • shinya.ta
                      shinya.ta @cvp last edited by

                      @cvp

                      Dear.cvp

                      n_emojis_in_set = 20
                      n_sets = 1 + int((len(emojis)-1)/n_emojis_in_set)
                      

                      Where should I put this code in?
                      I tried to put it in the last line, but there was no change.

                      cvp 1 Reply Last reply Reply Quote 0
                      • shinya.ta
                        shinya.ta @cvp last edited by

                        @cvp

                        It is the best if I can set this emoji to the task bar only by the operation of my wife who is visually impaired.

                        Is Pythonisa possible to set up a button only with buttons, not in the operation of the program?

                        cvp 1 Reply Last reply Reply Quote 0
                        • cvp
                          cvp @shinya.ta last edited by

                          @shinya.ta instead of

                          emojis = '๐Ÿ˜Š๐Ÿ˜œ๐Ÿ˜ฑ๐Ÿ’ฆโ˜”๏ธ๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃโ˜บ๏ธ๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿคฉ๐Ÿฅณ๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ'
                          n_sets = 4
                          vv_array = []
                          

                          Do

                          emojis = '๐Ÿ˜Š๐Ÿ˜œ๐Ÿ˜ฑ๐Ÿ’ฆโ˜”๏ธ๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃโ˜บ๏ธ๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿคฉ๐Ÿฅณ๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ'
                          n_emojis_in_set = 20
                          n_sets = 1 + int((len(emojis)-1)/n_emojis_in_set)
                          vv_array = []
                          
                          1 Reply Last reply Reply Quote 0
                          • cvp
                            cvp @shinya.ta last edited by cvp

                            @shinya.ta Sorry, I don't understand this

                            It is the best if I can set this emoji to the task bar only by the operation of my wife who is visually impaired.
                            
                            Is Pythonisa possible to set up a button only with buttons, not in the operation of the program?
                            

                            If I correctly understand, you want to ask this "next set of emojis" by a normal button.
                            But where do you want this button?

                            shinya.ta 1 Reply Last reply Reply Quote 0
                            • shinya.ta
                              shinya.ta @cvp last edited by

                              @cvp

                              Sorry for the poor English.

                              It is a button that my wife can set emoji by herself.

                              The location of the button is okay anywhere.

                              cvp 1 Reply Last reply Reply Quote 0
                              • cvp
                                cvp @shinya.ta last edited by cvp

                                @shinya.ta Try

                                #create normal keys
                                d = 32
                                dd = 4
                                emojis = '๐Ÿ˜Š๐Ÿ˜œ๐Ÿ˜ฑ๐Ÿ’ฆโ˜”๏ธ๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃโ˜บ๏ธ๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿคฉ๐Ÿฅณ๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ'
                                n_emojis_in_set = 20
                                n_sets = 1 + int((len(emojis)-1)/n_emojis_in_set)
                                vv_array = []
                                for i_set in range(0,n_sets):
                                	l = int(len(emojis)/n_sets)
                                	i = i_set * l
                                	set_emojis = emojis[i:i+l]
                                	w, h = ui.get_screen_size()	
                                	vv = ui.View(name='set'+str(i_set))
                                	vv.background_color = 'lightgray'
                                	h = 0
                                	x = dd
                                	y = dd
                                	for button_title in set_emojis:
                                		b = ui.Button(title=button_title)
                                		b_action = typeChar
                                		b.action=b_action
                                		b.frame = (x,y,d,d)
                                		b.font = ('.SFUIText', d)
                                		if (y+d+dd) > h:
                                			h = y + d + dd
                                		vv.add_subview(b)
                                		x = x + d + dd
                                		if (x+d+dd) > w:
                                			x = dd
                                			y = y + d + dd
                                	vv.frame = (0,0,w,h)
                                	vv_array.append(vv)
                                
                                tv.i_set = 0
                                tv.n_sets = n_sets
                                def nextSet(sender):
                                	tv.i_set = tv.i_set + 1
                                	if tv.i_set == tv.n_sets:
                                		tv.i_set = 0
                                	#attach our accessory to the textfield, and textview
                                	ww = vv_array[tv.i_set]
                                	tvo = tv.objc_instance
                                	#print(dir(tvo))
                                	tvo.setInputAccessoryView_(ObjCInstance(ww))
                                	tvo.reloadInputViews()
                                	
                                nextSet(vv_array[n_sets-1]['nextSet'])	# display 1st set
                                
                                # add a button at right of "typing suggestions", just above the keyboard
                                bb_target = ui.Button()
                                bb_target.action = nextSet
                                UIBarButtonItem = ObjCClass('UIBarButtonItem').alloc().initWithTitle_style_target_action_('Next Emojis',0,bb_target,sel('invokeAction:')).autorelease()
                                #UIBarButtonItem = ObjCClass('UIBarButtonItem').alloc().initWithImage_style_target_action_(ns(ui.Image.named('emj:Bicycle').with_rendering_mode(ui.RENDERING_MODE_ORIGINAL)),0,bb_target,sel('invokeAction:')).autorelease()
                                
                                UIBarButtonItemGroup = ObjCClass('UIBarButtonItemGroup').alloc().initWithBarButtonItems_representativeItem_([UIBarButtonItem],None)
                                
                                tvo = tv.objc_instance
                                tvo.inputAssistantItem().setTrailingBarButtonGroups([UIBarButtonItemGroup])
                                
                                v.present('sheet')
                                tv.selected_range = (0,0)
                                tv.begin_editing()
                                

                                shinya.ta 2 Replies Last reply Reply Quote 0
                                • shinya.ta
                                  shinya.ta @cvp last edited by

                                  @cvp

                                  Dear.cvp

                                  I didn't have a test because I didn't have time to try it.
                                  I'll take a test on the weekend.

                                  1 Reply Last reply Reply Quote 0
                                  • shinya.ta
                                    shinya.ta @cvp last edited by

                                    @cvp

                                    Dear.cvp

                                    When I tried the program, I got a Syntaxerror. Why is that?

                                    cvp 1 Reply Last reply Reply Quote 0
                                    • cvp
                                      cvp @shinya.ta last edited by

                                      @shinya.ta If the syntax error comes from the last line, I had made a copy/paste error, please check the two last lines versus the edit script above

                                      shinya.ta 2 Replies Last reply Reply Quote 0
                                      • shinya.ta
                                        shinya.ta @cvp last edited by

                                        @cvp

                                        Dear.cvp

                                        I tried it, but iPad can show next emji, but I couldn't display it on iPhone.

                                        1 Reply Last reply Reply Quote 0
                                        • shinya.ta
                                          shinya.ta @cvp last edited by

                                          @cvp

                                          I would like to display multiple windows at the same time and edit the text.

                                          Can I make it with Pythonisa?

                                          I don't know how to send pictures here.
                                          If you see the picture, I think you can see the image.

                                          cvp 2 Replies Last reply Reply Quote 0
                                          • cvp
                                            cvp @shinya.ta last edited by

                                            @shinya.ta To post here a picture, I use this little script:

                                            import pyimgur,photos,clipboard,os,console
                                            i=photos.pick_image()
                                            if i:
                                            	print(i.format)
                                            	format = 'gif' if (i.format == 'GIF') else 'jpg'
                                            	i.save('img.'+format)
                                            	clipboard.set(pyimgur.Imgur("303d632d723a549").upload_image('img.'+format, title="Uploaded-Image").link)
                                            	console.hud_alert("link copied!")
                                            	os.remove('img.'+format)
                                            

                                            You have to

                                            • run this script
                                            • the program will ask you to pick a picture from your camera roll
                                            • the program sends the picture to imgur site and copy the url in the clipboard
                                            • here, in the forum, you paste this url from the clipboard in a post
                                            • that's all, it takes some seconds
                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors