Timers in Python App: No More Waiting Around!

Timers in Python App: No More Waiting Around!
Photo by Mohammad Rahmani / Unsplash

Hey DroidScripters! Ever needed to delay an action or repeat a task at specific intervals in your Python app? If you're coming from a JavaScript background, you might be missing your trusty setTimeout and setInterval functions. Well, fret no more! Python in DroidScript has got you covered with its own equivalents, and they're super easy to use.

Let's face it, sometimes you need a little pause before executing a piece of code. Maybe you want to display a splash screen for a few seconds, or perhaps you need to update a UI element periodically. That's where timers come in!

In the DroidScript Python environment, you can achieve the same functionality as setTimeout and setInterval using:

  • app.SetTimeout(callback, delay): This is your setTimeout equivalent. It executes the callback function after the specified delay in milliseconds.
  • app.SetInterval(callback, interval): This is your setInterval equivalent. It repeatedly executes the callback function at the specified interval in milliseconds.

Let's see them in action!

Example: Using app.SetTimeout (Delayed Action)

from native import app

def OnStart():
  # Delay the message by 3 seconds (3000 milliseconds)
  app.SetTimeout(callback, 3000)

def show_message():
  app.ShowPopup("Delayed message!")

In this snippet, show_message will be called after a 3-second delay, displaying a popup.

Example: Using app.SetInterval (Repeating Action)

from native import app

count = 0

def OnStart():
  global txt
  #create a layout and add a text control to it.
  lay = app.CreateLayout("Linear", "VCenter,FillXY")
  
  txt = app.AddText(lay, "Counter: 0")
  txt.SetTextSize(32)
  
  app.AddLayout(lay)

  # Update the counter every 1 second (1000 milliseconds)
  app.SetInterval(update_counter, 1000)

def update_counter():
  global count, txt
  count += 1
  txt.SetText("Counter: " + str(count))

Happy Coding!