kailive.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import threading
  2. import time
  3. import kaiscr
  4. import sys
  5. import gi
  6. gi.require_version("Gtk", "3.0")
  7. from gi.repository import Gtk, GdkPixbuf, GLib, Gdk
  8. takescreenshot = kaiscr.TakeScreenshot()
  9. screenshot = takescreenshot.screenshot
  10. bye = takescreenshot.close
  11. img = None
  12. stop = False
  13. def quit(*args):
  14. global stop
  15. stop = True
  16. bye()
  17. Gtk.main_quit()
  18. def on_keypress(widget, event):
  19. if event.keyval == 113: # q key
  20. quit()
  21. def update_pic():
  22. global img
  23. global takescreenshot
  24. try:
  25. while not stop:
  26. loader = GdkPixbuf.PixbufLoader()
  27. png = screenshot()
  28. loader.write(png)
  29. pb = loader.get_pixbuf()
  30. if not img:
  31. img = Gtk.Image.new_from_pixbuf(pb)
  32. else:
  33. img.set_from_pixbuf(pb)
  34. loader.close()
  35. except Exception as e:
  36. print(e)
  37. threading.Thread(target=update_pic).start()
  38. window = Gtk.Window()
  39. window.connect("destroy", quit)
  40. window.connect("key-press-event", on_keypress)
  41. window.set_type_hint(Gdk.WindowTypeHint.UTILITY)
  42. while not img:
  43. time.sleep(0.1)
  44. window.add(img)
  45. window.show_all()
  46. Gtk.main()