Keyboard ui button.
I've made a keyboard application. I want to make a list of Emoji by its development.
Can I use the ui button to create a different window?
@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?
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.
#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()
I didn't have a test because I didn't have time to try it.
I'll take a test on the weekend.
When I tried the program, I got a Syntaxerror. Why is that?
@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
I tried it, but iPad can show next emji, but I couldn't display it on iPhone.
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.
@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
@shinya.ta If the 'next emoji' is not displayed on iPhone, it is perhaps a problem of screen width (sorry, I can't test it), you could try to put a shorter title to this button, like
UIBarButtonItem = ObjCClass('UIBarButtonItem').alloc().initWithTitle_style_target_action_('⏩',0,bb_target,sel('invokeAction:')).autorelease()
If you parametrized big characters in your iPhone settings, the system does not have sufficient room to display this button
It was difficult to send a photo to me because it was difficult to send.
So, I will explain in writing.
Can I open multiple windows at the same time with Pythonisa so that I can open multiple tasks with a computer?
@shinya.ta you can run multiple threads to process several tasks at once but you will have only one UI, user interface, thus not really multiple windows active at the same time.
@shinya.ta Apple's doc says:
Custom items can be added to the shortcuts bar on iPad only. On iPhone, the contents of the UITextInputAssistantItem object are ignored.
I see, I'll try to open it on GitHub.
@shinya.ta you can always
- tap raw
- select all
- paste it into your (new) script in Pythonista
Thank you. I'll try it on the weekend.
You are God.
@shinya.ta Try it before saying that, you'll perhaps regret it 😇
I am not sure if it is related to this program, but if you use voiceover on Pythonisa, there will be a sound that is irrelevant to the prediction conversion.
Why is this?
@shinya.ta I'm really sorry but I don't understand your post.
First of all, if your problem occurs when you start Pythonista, even outside my script, please try to describe with a maximum of details the problem in a new topic,assuming it is a Pythonista bug, thus for @omz
If the problem occurs only in my script, stay in this topic but give, please , more info's.