Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.cmm.msu.ru/trac/petri_dish/browser/scale.py?rev=18%3A9fa0119fa63c&format=txt
Дата изменения: Wed Dec 15 16:21:26 2010
Дата индексирования: Sat Feb 12 04:52:30 2011
Кодировка:
from Tkinter import *
import Bacteria
import Petri

class IF(object):
def __init__(self,delay=10,diam=300,num=1,env=1,reprod_a=False,reprod_s=False,life=1):
self.delay=delay
self.diam=diam
self.num=num
self.env=env
self.reprod_s=reprod_s
self.reprod_a=reprod_a
self.life=life

def __repr__(self):
return "<%s,%s,%s,%s,%s,%s,%s>"%(self.delay,self.diam,self.num,\
self.env,self.reprod_a,\
self.reprod_s,self.life)
def mutate():
pass

def sbmt(self):
submit.config(text="Stop",command=self.stop)
scl1.config(state=DISABLED)
scl2.config(state=DISABLED)
scl3.config(state=DISABLED)
cb1.config(state=DISABLED)
cb2.config(state=DISABLED)
self.num=scl1.get()
self.diam=scl2.get()
self.life=scl3.get()
c.config(height=self.diam+20,width=self.diam+20,bg="gray75")
filler=c.create_rectangle(0,0,self.diam+22,self.diam+22,fill="lightgrey")
c.grid(row=0,column=2,rowspan=6,padx=50,pady=10)
dish=c.create_oval(10,10,self.diam+10,self.diam+10,fill="white")
print self

def stop(self):
submit.config(text="Submit",command=self.sbmt)
scl1.config(state=NORMAL)
scl2.config(state=NORMAL)
scl3.config(state=NORMAL)
cb1.config(state=NORMAL)
cb2.config(state=NORMAL)

def new_reprod_a(self):
self.reprod_a=not(self.reprod_a)
return

def new_reprod_s(self):
self.reprod_s=not(self.reprod_s)
return

def help(self):
pass

def pause(self):
pass

def depict(self):
pass

def update_scale(widget, times):
value = widget.get()
length = widget['to'] - widget['from']
value += length * times / 10
widget.set(value)

root = Tk()
root.title("Interface")
intf=IF()
c=Canvas()

root.bind_class("Scale", "<4>", lambda ev: update_scale(ev.widget, +1))
root.bind_class("Scale", "<5>", lambda ev: update_scale(ev.widget, -1))

menubar = Menu(root)

# create a pulldown menu, and add it to the menu bar
controlsmenu = Menu(menubar, tearoff=0)
controlsmenu.add_command(label="Start", command=intf.sbmt)
controlsmenu.add_command(label="Stop", command=intf.stop)
controlsmenu.add_command(label="Add mutation", command=intf.mutate)
controlsmenu.add_separator()
controlsmenu.add_command(label="Exit", command=root.destroy)
#controlmenu.add_command(label="Pause", command=intf.pause)
menubar.add_cascade(label="Controls", menu=controlsmenu)

helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="About", command=intf.help)
menubar.add_cascade(label="Help", menu=helpmenu)

# display the menu
root.config(menu=menubar)



init_frame=LabelFrame(root,text="Initial parameters")
init_frame.grid(padx=15,pady=10)
scl1 = Scale(init_frame,orient=HORIZONTAL,length=100,from_=1,\
to=50,sliderlength=7,width=10)
scl1.grid(row=0, column=0,padx=10,pady=5)
lbl1 = Label(init_frame,text="number of cells",bg="white")
lbl1.grid(row=0,column=1,padx=10)
scl2 = Scale(init_frame,orient=HORIZONTAL,length=100,from_=100,\
to=500,sliderlength=7,width=10)
scl2.grid(row=1, column=0,padx=10,pady=5)
lbl2 = Label(init_frame,text="diameter of Petri dish",bg="white")
lbl2.grid(row=1,column=1,padx=10)
scl3 = Scale(init_frame,orient=HORIZONTAL,length=100,from_=1,\
to=30,sliderlength=7,width=10)
scl3.grid(row=2, column=0,padx=10,pady=5)
lbl3 = Label(init_frame,text="cells' lifetime",bg="white")
lbl3.grid(row=2,column=1,padx=10)
lbl_frame=LabelFrame(init_frame,text="Reproduction")
lbl_frame.grid(row=4,column=0,columnspan=2,padx=15,pady=10)
list=["Asexual","Sexual"]
cb1 = Checkbutton(lbl_frame,text="Asexual",command=intf.new_reprod_a)
cb1.pack()
cb2 = Checkbutton(lbl_frame,text="Sexual",command=intf.new_reprod_s)
cb2.pack()

submit=Button(root,text="Submit",width=25,command=intf.sbmt)
submit.grid(row=1,column=0,columnspan=2,pady=10)

chng_frame=LabelFrame(root,text="Changeable parameters")
chng_frame.grid(padx=15,pady=10)
scl = Scale(chng_frame,orient=HORIZONTAL,length=100,from_=1,\
to=100,sliderlength=7,width=10)
scl.grid(row=0, column=0,padx=10,pady=5)
lbl = Label(chng_frame,text="environment",bg="white")
lbl.grid(row=0,column=1,padx=10)
btn = Button(chng_frame,text="Add mutation",width=25,command=intf.mutate)
btn.grid(row=1,column=0,columnspan=2,pady=10)

#root.after(intf.delay,intf.depict())

mainloop()