#!/bin/sh """:" exec python $0 ${1+"$@"} """ # --------------------- HelloLegends.py --------------------- # # This program demonstrates all methods available for the legends. # Note that this program does not do anything useful; # its purpose is to try out functionality only. # from Tkinter import * # The Tk package import Pmw # The Python MegaWidget package import math # import the sin-function master = Tk() # build Tk-environment ncurves = 4 # draw 4 curves npoints = 32 # use 32 points on each curve if not Pmw.Blt.haveblt(master): # Is Blt installed? print("BLT is not installed!") else: vector_x = [] # make vector for x-axis vector_y = [] for y in range(ncurves): vector_y.append([]) for x in range(npoints+1): vector_x.append(x*0.1) # fill vectors with cool graphs for c in range(ncurves): vector_y[c].append(math.sin(c*x*0.1)) g = Pmw.Blt.Graph(master) g.pack(expand=1, fill='both') for c in range(ncurves): curvename = 'sin(' + str(c) +'x)' g.line_create(curvename, xdata=tuple(vector_x), ydata=tuple(vector_y[c]), symbol='') g.configure(title='Hello Legend') ############ legend_get, legend_deactivate, legend_activate ############## activeLegends = {} g.pen_configure("activeLine", symbol="scross") def mouseDown(event): global activeLegends pos = "@" +str(event.x) +"," +str(event.y) legend = g.legend_get(pos) # get the selected legend. if activeLegends.has_key(legend): g.legend_deactivate(legend) # deactivate the legend g.element_deactivate(legend) # deactivate the data as well del activeLegends[legend] # remove key from dictionary else: g.legend_activate(legend) # mark the new legend. g.element_activate(legend) # mark the data as well activeLegends[legend] = 1 # set a mark in the dictionary ############################### legend_bind ############################## def dummyfunc(event): print "dummy" g.legend_bind("all", "<ButtonPress>", mouseDown) g.legend_bind("all", "<ButtonRelease>", dummyfunc) ############################## legend_unbind ############################# g.legend_unbind("all", "<ButtonRelease>") # cancel last binding. ############################### legend_cget ############################## anchor = g.legend_cget("anchor") print "Current anchor position: ", anchor ############################# legend_configure ########################### all = g.legend_configure() print "all options:", for option in all.keys(): print option, print "\n" # set some configuration options. g.legend_configure(anchor="ne", background="lightblue", activebackground="blue", position="@400,50") # set a custom name for this graph. This will be used in the legend. g.element_configure("sin(1x)", label="custom") master.mainloop()