# py/pyext - python script objects for PD and MaxMSP # # Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net) # For information on usage and redistribution, and for a DISCLAIMER OF ALL # WARRANTIES, see the file, "license.txt," in this distribution. # """This is an example script for showing a nonsense tcl/tk application.""" try: import pyext except: print "ERROR: This script must be loaded by the PD/Max pyext external" from Tkinter import * import random class Application(Frame): """This is the TK application class""" # Button pressed def say_hi(self): self.extcl._outlet(1,"hi there, everyone!") # Mouse motion over canvas def evfunc(self, ev): x = random.uniform(-3,3) y = random.uniform(-3,3) self.mcanv.move('group',x,y) # Create interface stuff def createWidgets(self): self.hi = Button(self) self.hi["text"] = "Hi!" self.hi["fg"] = "red" self.hi["command"] = self.say_hi self.hi.pack({"side": "left"}) self.mcanv = Canvas(self) self.mcanv.pack({"side": "left"}) self.mcanv.bind("", self.evfunc) self.mcanv.create_rectangle(50,50,200,200) r = self.mcanv.create_rectangle(50,50,200,200) self.mcanv.addtag_withtag('group',r) for i in xrange(500): x = random.uniform(50,200) y = random.uniform(50,200) l = self.mcanv.create_line(x,y,x+1,y) self.mcanv.addtag_withtag('group',l) # Constructor def __init__(self,cl): self.extcl = cl Frame.__init__(self) self.pack() self.createWidgets() pass # derive class from pyext._class class myapp(pyext._class): """This class demonstrates how a TCL/TK can be openened from within a pyext external""" # how many inlets and outlets? _inlets = 1 _outlets = 1 # Constructor def __init__(self): # detach bang method self._detach(1) def bang_1(self): self._priority(-3) # display the tcl/tk dialog app = Application(self) app.mainloop()