tkrefresh.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/python3
  2. import time
  3. import sys
  4. from lib.cprint import cprint
  5. import traceback
  6. import __main__ as MAIN
  7. class Refresher():
  8. def __init__(self):
  9. self.time = time.time()
  10. self.time_max = time.time()
  11. self.time_delta = 15
  12. self.update = 1
  13. self.name = "name" # exec
  14. self.cb = None #self.dummy_cb
  15. def dummy_cb(self):
  16. cprint("dummy_cd()",time.time()-self.time)
  17. def reset(self):
  18. self.time = time.time()
  19. self.update = 1
  20. def refresh(self):
  21. if self.update:
  22. if self.time+self.time_delta < time.time():
  23. self._refresh()
  24. else:
  25. self.time = time.time()
  26. def _refresh(self):
  27. cprint("_refresh()",self.name,self)
  28. if not MAIN.INIT_OK:
  29. return
  30. self.time_max = time.time()
  31. self.time = time.time()
  32. self.update = 0
  33. try:
  34. if self.cb:
  35. self.cb()
  36. else:
  37. self.dummy_cb()
  38. except Exception as e:
  39. cprint("_refresh except:",e,"cb:",self.cb,color="red")
  40. traceback.print_exc()
  41. cprint()
  42. cprint("t=",self.time_max- time.time())
  43. def loop(self,args={}):
  44. while 1:
  45. try:
  46. if MAIN.INIT_OK:
  47. self.refresh()
  48. #tkinter.Tk.update_idletasks(gui_menu_gui.tk)
  49. except Exception as e:
  50. traceback.print_exc()
  51. cprint("== cb EXCEPT",e,color="red")
  52. cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red")
  53. cprint(''.join(traceback.format_exception(None, e, e.__traceback__)),color="red")
  54. time.sleep(0.2)