Hello!
I am using a Tkinter GUI to operate a C binary whose input is a float number 
gotten from a Scale widget, and whose output is a datafile. I would like to get 
gnuplot to replot the datafile each time it is overwritten (in essence have the 
plot refreshed by the Scale slider).
To do that, I pass the function "printer(self,newval)", to the Scale's command. 
In the printer function, I use os.system to execute the binary, and I operate 
gnuplot as a special file opened by os.popen, to which I write with the 
chevrons print statement.

 import os,Tkinter,string,time
 class MyApp:
     def __init__(self, parent):
         self.f=os.popen("gnuplot -","w")
         print >>self.f,"plot \"data.dat\" with lines"
         print >>self.f,"reread"
         self.myParent=parent
 self.myContainer1=Frame(parent)
 self.myContainer1.pack()
 self.v=DoubleVar()
         
self.slider1=Scale(self.myParent,from_=0,to=1,resolution=0.001,command=self.printer)#variable=self.v,command=self.printer)
         self.slider1.pack()

     def printer(self,newval):
         os.system("/bin/generate_data_file "+str(newval))
         time.sleep(0.09)
 print >>self.f,"replot\n"
         return newval
 root=Tk()
 myapp=MyApp(root)
 root.mainloop()

 Unfortunately I don't obtain the expected result. The Tk window is there with 
functioning slider, the generate_data_file is executed and given the proper 
input value from the slider, but gnuplot is still a problem. The gnuplot window 
only comes up when I close the Tkinter window, and shuts down rapidly.
Do you have any ideas as to what I need to fix ? Also, it would be great not to 
have to use the pyGnuplot.py package, as the program will have to run on 
minimally installed boxes (i.e. standard python, no extra modules allowed).

Thanks a lot !

"It does not pay to leave a live
dragon out of your calculations"
 - Tolkien 

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to