petri_dish
changeset 17:15d7afe555a4
Automated merge with ssh://kodomo/petri_dish
author | Daniil Alexeyevsky <me.dendik@gmail.com> |
---|---|
date | Wed, 15 Dec 2010 15:49:24 +0300 |
parents | eec3dd65336c 05518686d7af |
children | 9fa0119fa63c |
files | |
diffstat | 1 files changed, 129 insertions(+), 0 deletions(-) [+] |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/scale.py Wed Dec 15 15:49:24 2010 +0300 1.3 @@ -0,0 +1,129 @@ 1.4 +from Tkinter import * 1.5 +import Bacteria 1.6 +import Petri 1.7 + 1.8 +class IF(object): 1.9 + def __init__(self,delay=10,diam=300,num=1,env=1,reprod_a=False,reprod_s=False,life=1): 1.10 + self.delay=delay 1.11 + self.diam=diam 1.12 + self.num=num 1.13 + self.env=env 1.14 + self.reprod_s=reprod_s 1.15 + self.reprod_a=reprod_a 1.16 + self.life=life 1.17 + 1.18 + def __repr__(self): 1.19 + return "<%s,%s,%s,%s,%s,%s,%s>"%(self.delay,self.diam,self.num,\ 1.20 + self.env,self.reprod_a,\ 1.21 + self.reprod_s,self.life) 1.22 + def mutate(): 1.23 + pass 1.24 + 1.25 + def sbmt(self): 1.26 + submit.config(text="Stop",command=self.stop) 1.27 + scl1.config(state=DISABLED) 1.28 + scl2.config(state=DISABLED) 1.29 + scl3.config(state=DISABLED) 1.30 + cb1.config(state=DISABLED) 1.31 + cb2.config(state=DISABLED) 1.32 + self.num=scl1.get() 1.33 + self.diam=scl2.get() 1.34 + self.life=scl3.get() 1.35 + c.config(height=self.diam+20,width=self.diam+20,bg="gray75") 1.36 + filler=c.create_rectangle(0,0,self.diam+22,self.diam+22,fill="lightgrey") 1.37 + c.grid(row=0,column=2,rowspan=6,padx=50,pady=10) 1.38 + dish=c.create_oval(10,10,self.diam+10,self.diam+10,fill="white") 1.39 + print self 1.40 + 1.41 + def stop(self): 1.42 + submit.config(text="Submit",command=self.sbmt) 1.43 + scl1.config(state=NORMAL) 1.44 + scl2.config(state=NORMAL) 1.45 + scl3.config(state=NORMAL) 1.46 + cb1.config(state=NORMAL) 1.47 + cb2.config(state=NORMAL) 1.48 + 1.49 + def new_reprod_a(self): 1.50 + self.reprod_a=not(self.reprod_a) 1.51 + return 1.52 + 1.53 + def new_reprod_s(self): 1.54 + self.reprod_s=not(self.reprod_s) 1.55 + return 1.56 + 1.57 + def help(self): 1.58 + pass 1.59 + 1.60 + def pause(self): 1.61 + pass 1.62 + 1.63 + def depict(self): 1.64 + pass 1.65 + 1.66 +root = Tk() 1.67 +root.title("Interface") 1.68 +intf=IF() 1.69 +c=Canvas() 1.70 + 1.71 +menubar = Menu(root) 1.72 + 1.73 +# create a pulldown menu, and add it to the menu bar 1.74 +controlsmenu = Menu(menubar, tearoff=0) 1.75 +controlsmenu.add_command(label="Start", command=intf.sbmt) 1.76 +controlsmenu.add_command(label="Stop", command=intf.stop) 1.77 +controlsmenu.add_command(label="Add mutation", command=intf.mutate) 1.78 +controlsmenu.add_separator() 1.79 +controlsmenu.add_command(label="Exit", command=root.destroy) 1.80 +#controlmenu.add_command(label="Pause", command=intf.pause) 1.81 +menubar.add_cascade(label="Controls", menu=controlsmenu) 1.82 + 1.83 +helpmenu = Menu(menubar, tearoff=0) 1.84 +helpmenu.add_command(label="About", command=intf.help) 1.85 +menubar.add_cascade(label="Help", menu=helpmenu) 1.86 + 1.87 +# display the menu 1.88 +root.config(menu=menubar) 1.89 + 1.90 + 1.91 + 1.92 +init_frame=LabelFrame(root,text="Initial parameters") 1.93 +init_frame.grid(padx=15,pady=10) 1.94 +scl1 = Scale(init_frame,orient=HORIZONTAL,length=100,from_=1,\ 1.95 + to=50,sliderlength=7,width=10) 1.96 +scl1.grid(row=0, column=0,padx=10,pady=5) 1.97 +lbl1 = Label(init_frame,text="number of cells",bg="white") 1.98 +lbl1.grid(row=0,column=1,padx=10) 1.99 +scl2 = Scale(init_frame,orient=HORIZONTAL,length=100,from_=100,\ 1.100 + to=500,sliderlength=7,width=10) 1.101 +scl2.grid(row=1, column=0,padx=10,pady=5) 1.102 +lbl2 = Label(init_frame,text="diameter of Petri dish",bg="white") 1.103 +lbl2.grid(row=1,column=1,padx=10) 1.104 +scl3 = Scale(init_frame,orient=HORIZONTAL,length=100,from_=1,\ 1.105 + to=30,sliderlength=7,width=10) 1.106 +scl3.grid(row=2, column=0,padx=10,pady=5) 1.107 +lbl3 = Label(init_frame,text="cells' lifetime",bg="white") 1.108 +lbl3.grid(row=2,column=1,padx=10) 1.109 +lbl_frame=LabelFrame(init_frame,text="Reproduction") 1.110 +lbl_frame.grid(row=4,column=0,columnspan=2,padx=15,pady=10) 1.111 +list=["Asexual","Sexual"] 1.112 +cb1 = Checkbutton(lbl_frame,text="Asexual",command=intf.new_reprod_a) 1.113 +cb1.pack() 1.114 +cb2 = Checkbutton(lbl_frame,text="Sexual",command=intf.new_reprod_s) 1.115 +cb2.pack() 1.116 + 1.117 +submit=Button(root,text="Submit",width=25,command=intf.sbmt) 1.118 +submit.grid(row=1,column=0,columnspan=2,pady=10) 1.119 + 1.120 +chng_frame=LabelFrame(root,text="Changeable parameters") 1.121 +chng_frame.grid(padx=15,pady=10) 1.122 +scl = Scale(chng_frame,orient=HORIZONTAL,length=100,from_=1,\ 1.123 + to=100,sliderlength=7,width=10) 1.124 +scl.grid(row=0, column=0,padx=10,pady=5) 1.125 +lbl = Label(chng_frame,text="environment",bg="white") 1.126 +lbl.grid(row=0,column=1,padx=10) 1.127 +btn = Button(chng_frame,text="Add mutation",width=25,command=intf.mutate) 1.128 +btn.grid(row=1,column=0,columnspan=2,pady=10) 1.129 + 1.130 +#root.after(intf.delay,intf.depict()) 1.131 + 1.132 +mainloop()