Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.cmm.msu.su/hg/petri_dish/rev/15d7afe555a4
Дата изменения: Unknown
Дата индексирования: Mon Oct 1 22:11:12 2012
Кодировка:
petri_dish: 15d7afe555a4

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()