#!bin/python import sys, time, math import tkinter as tk import run_local import light9.dmxclient as dmxclient from light9.TLUtility import make_attributes_from_args from light9.Submaster import Submaster, sub_maxes class pad(tk.Frame): levs = None # Submaster : level def __init__(self, master, root, mag): make_attributes_from_args('master', 'mag') tk.Frame.__init__(self, master) self.levs = {} for xy, key, subname in [ ((1, 1), 'KP_Up', 'centered'), ((1, 3), "KP_Down", 'third-c'), ((0, 2), 'KP_Left', 'scoop-l'), ((2, 2), 'KP_Right', 'scoop-r'), ((1, 0), 'KP_Divide', 'cyc'), ((0, 3), "KP_End", 'hottest'), ((2, 3), 'KP_Next', 'deepblues'), ((0, 4), 'KP_Insert', "zip_red"), ((2, 4), 'KP_Delete', "zip_orange"), ((3, 1), 'KP_Add', 'strobedim'), ((3, 3), 'KP_Enter', 'zip_blue'), ((1, 2), 'KP_Begin', 'scoop-c'), ]: sub = Submaster(subname) self.levs[sub] = 0 l = tk.Label(self, font="arial 12 bold", anchor='w', height=2, relief='groove', bd=5, text="%s\n%s" % (key.replace('KP_', ''), sub.name)) l.grid(column=xy[0], row=xy[1], sticky='news') root.bind( "" % key, lambda ev, sub=sub: self.bumpto(sub, 1)) root.bind("" % key, lambda ev, sub=sub: self.bumpto(sub, 0)) def bumpto(self, sub, lev): now = time.time() self.levs[sub] = lev * self.mag.get() self.master.after_idle(self.output) def output(self): dmx = sub_maxes(*[s * l for s, l in list(self.levs.items())]).get_dmx_list() dmxclient.outputlevels(dmx, clientid="bumppad") root = tk.Tk() root.tk_setPalette("maroon4") root.wm_title("bumppad") mag = tk.DoubleVar() tk.Label(root, text="Keypad press/release activate sub; 1..5 set mag", font="Helvetica -12 italic", anchor='w').pack(side='bottom', fill='x') pad(root, root, mag).pack(side='left', fill='both', exp=1) magscl = tk.Scale(root, orient='vertical', from_=1, to=0, res=.01, showval=1, variable=mag, label='mag', relief='raised', bd=1) for i in range(1, 6): root.bind("" % i, lambda ev, i=i: mag.set(math.sqrt((i) / 5))) magscl.pack(side='left', fill='y') root.mainloop()