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.


    Console.input_alert freeze

    Pythonista
    2
    2
    2061
    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.
    • DigiDan
      DigiDan last edited by

      I have a webview that calls console.input_alert in the webview_did_finish_load function.

      I ensure that this is called on a background thread using the

      @ui.in_background decorator.
      

      I am experiencing freezes when the alert is displayed where I can't press any buttons or enter any text in the alert and I can't exit the Python app using the little cross in the top left.

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

        This issue seems be caused when the ui thread is trying to do some animation or drawing while console.alert is presented. In this case, webview is probably finishing rendering while the alert is trying to pop up, not sure. .

        The workaround is to ui.delay your alert for a small time, 0.5 has been pretty safe, but maybe as low as 0.25, depending on what was being done. if you have an actual animation pending, need to wait for animation to complete. Also, make sure you don't have any pending delays that could try to do anything to change the ui state.

            def webview_did_finish_load(self,webview):
                @ui.in_background
                def alert():
                    console.alert('test')
                ui.delay(alert,0.5) # give enougn time for webview to finish drawing
                #ui.delay(webview.superview.close,5.0) an example of what NOT TO DO.. this will crash if alert is still open after 5 sec
        

        I will point out that hud_alert is much nicer if you just want to display a message that says the page loaded. This doesn't need to be backgrounded or delayed, and you don't have to handle the keyboardinterrupt that alert raises, etc. only use alert if you want actual interaction with the user.

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