I think I found the right place for it.
@ui.in_background
def got_input(st) :
theModel.parse(st)
That works in my program too.
Thanks everyone for running such a patient and informative forum.
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.
I think I found the right place for it.
@ui.in_background
def got_input(st) :
theModel.parse(st)
That works in my program too.
Thanks everyone for running such a patient and informative forum.
@cvp well, I just can’t find the right place to put it in my program.
I will have to try another way entirely.
@Tel that seems to do it!!! But I don’t understand it, do you?
@cvp [i was taking a nap for a while] I’ll try that.
There’s obviously a lot I don’t understand about ui.in_background.
So NewLink() has completed. Now if there is a return(result) at the end of NewLink(), after the print, where does it return to?
@cvp that print is just to prove that NewLink has completed before the dialog OK has been pressed. Therefore the dialog did not block.
@cvp of course, but in order to see what’s happening you need to insert
print(NewLink(st))
And you will see the same thing happens.
@cvp so, back to my original point, the dialog should block the return out of Newlink, but it doesn’t. And there is nothing for me to put a wait_modal() on.
@cvp but don’t you see that Newlink return None, before that?
This is the output when I type “This string” in the view
after calling NewLink: None
from parse after dialog: {'name': 'This string'}
@cvp yes. I am going to shut this topic down. No one will read a topic with 50 posts
@cvp better, but not working correctly. Try this, you will see that the NewLink ()returns None before the input is processed
import sys, dialogs
import ui
import console
global theView
class MyView(ui.View):
last_content_offset = (-1,-1)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.make_view()
self.value = None
def make_view(self):
self.tv= ui.TextView(title='textview1', frame=self.bounds.inset(10,10),editable = False, border_width=2, bg_color='white', flex='hw')
self.update_interval = 1/60
self.tv.height = self.bounds.height-70
self.add_subview(self.tv)
tf = ui.TextField(frame = self.bounds.inset(10, 10), text_color='red')
#print (self.bounds)
tf.frame=(10,240,self.bounds.width-20,40)
tf.height =32
tf.delegate = self
tf.flex = 'w'
tf.begin_editing()
self.add_subview(tf)
def update(self) :
self.tv.content_offset = (0, self.tv.content_size[1] - self.tv.height)
if self.tv.content_offset[1] < 0:
self.tv.content_offset = (0,0)
#if self.tv.content_offset != MyView.last_content_offset :
#print ('*',self.tv.content_offset, self.tv.content_size, #self.height)
MyView.last_content_offset = self.tv.content_offset
def feedback(self, st):
self.tv.text += st +'\n'
def textfield_did_change(self, textfield):
self.value = textfield.text
def textfield_should_return(self, textfield):
st = textfield.text
self.tv.text += '>'+ st + '\n'
theModel.parse(st)
textfield.text=''
return True
def delayed_close(self) :
self.feedback('shutting down...')
ui.delay(self.close, 5)
def feedback(st):
global theView
theView.feedback(st)
def startView():
global theView
theView = MyView(frame = (0,0,430,300), bg_color='white')
theView.present(style='sheet', animated=False)
return theView
class Model() :
def parse(self,st) :
print('after calling NewLink:',NewLink(st))
@ui.in_background
def NewLink(st):
fields = [{'title':'name','type':'text','value':st} ]
result = dialogs.form_dialog(title='Link design', done_button_title='ok',fields=fields, sections=None)
feedback(str(result))
print('from parse after dialog:',result)
if __name__ == "__main__":
console.clear()
#show just ui
theModel= Model()
startView()
@cvp it hangs when I run this script, after it displays the form dialog
@cvp thanks for your help. I’m going to see if anyone else has ideas before I give up on the project.
@cvp I don’t understand doing it in Safari, but it doesn’t help.
Cannot do anything with Pythonista when it hangs.
@cvp absolutely. It’s the only way to get rid of the running app. Unless you know another way...?
@cvp I rebooted device. It still hangs there. I don’t know how to go back to system 12.4