blc - Simple program for rendering QLC+ workspaces properly/without crashing. Developed into BLC2.

git clone https://benconnors.ca/git-repos/blc

About | Log | Files | Refs

tktest.py (1369B) - raw


      1 #!/usr/bin/env python3
      2 
      3 """Basic testing for Show rendering with Tk output."""
      4 
      5 import threading
      6 import time
      7 from tkinter import Tk, N, E, S, W, Label, Button
      8 import sys
      9 
     10 from blc.workspace import Workspace
     11 from blc.tk import TkOutput
     12 from blc.render import BasicRenderer
     13 
     14 def update(m, l, sl, r):
     15     """Update GUI elements."""
     16     if r.stall_lock.acquire(blocking=False):
     17         r.stall_lock.release()
     18         sl.config(text="Running")
     19     else:
     20         sl.config(text="Stalled")
     21     l.config(text="%.1f" % ((time.monotonic() - r.start_time) if r.start_time is not None else 0))
     22     m.after(50, lambda: update(m,l,sl,r))
     23 
     24 if len(sys.argv) != 3:
     25     print("Usage: %s <workspace> <show id>" % sys.argv[0])
     26     sys.exit(1)
     27 
     28 w = Workspace.load(sys.argv[1])
     29 s = w.functions[int(sys.argv[2])]
     30 
     31 root = Tk()
     32 root.columnconfigure(0, weight=1)
     33 root.rowconfigure(0, weight=1)
     34 
     35 output = TkOutput(root)
     36 output.grid(row=0, sticky=N+E+S+W)
     37 
     38 label = Label(root)
     39 label.grid(row=1,sticky=N+E+S+W)
     40 
     41 slabel = Label(root)
     42 slabel.grid(row=2,sticky=N+E+S+W)
     43 
     44 root.wm_title("BLC+ TkTest - "+s.name)
     45 
     46 renderer = BasicRenderer(s, output, minnx=13)
     47 rthread = threading.Thread(target=renderer.start)
     48 rthread.start()
     49 
     50 Button(root,text="Advance",command=lambda *args: renderer.advance()).grid(row=3, sticky=N+E+S+W)
     51 
     52 root.after(50, lambda: update(root, label, slabel, renderer))
     53 
     54 root.mainloop()