Mercurial > code > home > repos > light9
view flax/MusicTime.py @ 134:f2f73a2171e6
many adjustments to the loops and timing
many adjustments to the loops and timing
now sends the hardware updates only when clients change, but at least 1Hz
new option to adjust the rate of the loop that considers sending changes (if
the lights have changed)
author | drewp |
---|---|
date | Sat, 14 Jun 2003 14:59:09 +0000 |
parents | 45b12307c695 |
children | 3905d3c92aaa |
line wrap: on
line source
import Tkinter as tk import xmlrpclib, socket, time class MusicTime: def __init__(self, server, port): self.player = xmlrpclib.Server("http://%s:%d" % (server, port)) def get_music_time(self): playtime = None while not playtime: try: playtime = self.player.gettime() except socket.error, e: print "Server error %s, waiting" % e time.sleep(2) return playtime class MusicTimeTk(tk.Frame, MusicTime): def __init__(self, master, server, port): tk.Frame.__init__(self) MusicTime.__init__(self, server, port) self.timevar = tk.DoubleVar() self.timelabel = tk.Label(self, textvariable=self.timevar, bd=2, relief='raised', width=10, padx=2, pady=2, anchor='w') self.timelabel.pack(expand=1, fill='both') def print_time(evt, *args): self.update_time() print self.timevar.get(), evt.keysym self.timelabel.bind('<KeyPress>', print_time) self.timelabel.bind('<1>', print_time) self.timelabel.focus() self.update_time() def update_time(self): self.timevar.set(self.get_music_time()) self.after(100, self.update_time) if __name__ == "__main__": from optik import OptionParser parser = OptionParser() parser.add_option("-s", "--server", default='dash') parser.add_option("-p", "--port", default=8040, type='int') options, args = parser.parse_args() root = tk.Tk() root.title("Time") MusicTimeTk(root, options.server, options.port).pack(expand=1, fill='both') try: tk.mainloop() except KeyboardInterrupt: root.destroy()