Files
uiautomator2/_archived/messagebox.py
codeskyblue c25a3e512e use u2.jar instead of test apk (#1004)
* use u2.jar instead of test apk
* update toast api, use d.last_toast to get toast, d.clear_toast() to reset it
* add more unittests
* fix multi thread when use connect
2024-07-17 00:07:19 +08:00

70 lines
1.8 KiB
Python

# coding: utf-8
#
import time
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
def retryskipabort(message, timeout=20):
"""
Show dialog of RETRY,SKIP,ABORT
Returns:
one of "retry", "skip", "abort"
"""
root = tk.Tk()
root.geometry("400x200")
root.title("Exception handle")
root.eval('tk::PlaceWindow %s center' % root.winfo_pathname(root.winfo_id()))
root.attributes("-topmost", True)
_kvs = {"result": "abort"}
def cancel_timer(*args):
root.after_cancel(_kvs['root'])
root.title("Manual")
def update_prompt():
cancel_timer()
def f(result):
def _inner():
_kvs['result'] = result
root.destroy()
return _inner
tk.Label(root, text=message).pack(side=tk.TOP, fill=tk.X, pady=10)
frmbtns = tk.Frame(root)
tk.Button(frmbtns, text="Skip", command=f('skip')).pack(side=tk.LEFT)
tk.Button(frmbtns, text="Retry", command=f('retry')).pack(side=tk.LEFT)
tk.Button(frmbtns, text="ABORT", command=f('abort')).pack(side=tk.LEFT)
frmbtns.pack(side=tk.BOTTOM)
prompt = tk.StringVar()
label1 = tk.Label(root, textvariable=prompt) #, width=len(prompt))
label1.pack()
deadline = time.time() + timeout
def _refresh_timer():
leftseconds = deadline - time.time()
if leftseconds <= 0:
root.destroy()
return
root.title("Test will stop after " + str(int(leftseconds)) + " s")
_kvs['root'] = root.after(500, _refresh_timer)
_kvs['root'] = root.after(0, _refresh_timer)
root.bind('<Button-1>', cancel_timer)
root.mainloop()
return _kvs['result']
if __name__ == '__main__':
print(retryskipabort('LKJSDF\nlkjj\what?lkjsdlfjaskdfjlasdkjflnice'))