| blc - Simple program for rendering QLC+ workspaces properly/without crashing. Developed into BLC2.
git clone https://benconnors.ca/git-repos/blc |
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()