def encrypt_input(): ourMessage = '' for i in range(len(encryptedinput)): ourMessage += encryptedinput[i] messageVar = Message(inputwindow, text=ourMessage) messageVar.config(bg='lightgray') messageVar.config(aspect=400) messageVar.grid()
def __setup_instructions(self): # Instructions on bottom of screen self.instructions = Frame(self.root) instruct = Message(self.instructions, text=("Controls: Press Left and Right to change month, Up and Down to " "change year, and spacebar to return to the current date"), width=500) instruct.grid(columnspan=3) self.instructions.grid(sticky="WE", columnspan=3)
class Scroller(object): """ Scrolls through a solution list. """ def __init__(self, wdw, sols): """ Stores the list of solutions in sols and defines the layout of the GUI. """ wdw.title('solutions scroller') self.sols = sols self.cursor = 0 self.lbl = Label(wdw, text="solution : ") self.lbl.grid(row=0, column=0, sticky=E) self.ent = Entry(wdw) self.ent.grid(row=0, column=1, stick=W) self.ent.insert(INSERT, "0 of %d" % len(sols)) self.myft = Font(family="Courier New", size=12, weight="normal") self.mlen = self.myft.measure("M") lines = sols[0].split('\n') self.width = max([len(line) for line in lines]) self.display = StringVar() self.display.set(self.sols[0]) self.mess = Message(wdw, textvariable=self.display, \ font=self.myft, width=self.width*self.mlen, background='white') self.mess.grid(row=1, column=0, columnspan=2) self.btnext = Button(wdw, command=self.next, text='next') self.btnext.grid(row=2, column=1, sticky=W+E) self.btprev = Button(wdw, command=self.previous, text='previous') self.btprev.grid(row=2, column=0, sticky=W+E) def show(self): """ Shows the solution at position self.cursor in the message widget and updates the entry widget. """ self.display.set(self.sols[self.cursor]) self.ent.delete(0, END) self.ent.insert(INSERT, '%d of %d' % (self.cursor, len(self.sols))) def next(self): """ Increases the cursor by one if possible. """ if self.cursor < len(self.sols) - 1: self.cursor = self.cursor + 1 self.show() def previous(self): """ Decreases the cursor by one if possible. """ if self.cursor > 0: self.cursor = self.cursor - 1 self.show()
class Scroller(object): """ Scrolls through a solution list. """ def __init__(self, wdw, sols): """ Stores the list of solutions in sols and defines the layout of the GUI. """ wdw.title('solutions scroller') self.sols = sols self.cursor = 0 self.lbl = Label(wdw, text="solution : ") self.lbl.grid(row=0, column=0, sticky=E) self.ent = Entry(wdw) self.ent.grid(row=0, column=1, stick=W) self.ent.insert(INSERT, "0 of %d" % len(sols)) self.myft = Font(family="Courier New", size=12, weight="normal") self.mlen = self.myft.measure("M") lines = sols[0].split('\n') self.width = max([len(line) for line in lines]) self.display = StringVar() self.display.set(self.sols[0]) self.mess = Message(wdw, textvariable=self.display, \ font=self.myft, width=self.width*self.mlen, background='white') self.mess.grid(row=1, column=0, columnspan=2) self.btnext = Button(wdw, command=self.next, text='next') self.btnext.grid(row=2, column=1, sticky=W + E) self.btprev = Button(wdw, command=self.previous, text='previous') self.btprev.grid(row=2, column=0, sticky=W + E) def show(self): """ Shows the solution at position self.cursor in the message widget and updates the entry widget. """ self.display.set(self.sols[self.cursor]) self.ent.delete(0, END) self.ent.insert(INSERT, '%d of %d' % (self.cursor, len(self.sols))) def next(self): """ Increases the cursor by one if possible. """ if self.cursor < len(self.sols) - 1: self.cursor = self.cursor + 1 self.show() def previous(self): """ Decreases the cursor by one if possible. """ if self.cursor > 0: self.cursor = self.cursor - 1 self.show()
def initUI(self): self.parent.title("Client") frame = Frame(self, relief=tk.RAISED, borderwidth=1) # The width of the first column gets almost no change. frame.columnconfigure(0, pad=10, weight=1) frame.columnconfigure(1, pad=10, weight=1000) lbl_addr = Label(frame, text="Address") lbl_addr.grid(row=0,column=0, sticky=tk.W+tk.S) lbl_port = Label(frame, text="Port") lbl_port.grid(row=0,column=1, sticky=tk.W+tk.S) ent_addr = Entry(frame, width=15) ent_addr.grid(row=1,column=0, sticky=tk.W+tk.N) ent_port = Entry(frame, width=6) ent_port.grid(row=1,column=1, sticky=tk.W+tk.N) lbl_msg = Label(frame, text="Input Message", anchor=tk.E) lbl_msg.grid(row=2,column=0, sticky=tk.W+tk.S) ent_msg = Text(frame, width=30, height=4) ent_msg.grid(row=3,column=0, columnspan=2, sticky=tk.W+tk.E+tk.N) # sticky can be used to expand lbl_num = Label(frame, text="Input Number") lbl_num.grid(row=4,column=0, sticky=tk.W+tk.S) ent_num = Entry(frame, width=6) ent_num.grid(row=5,column=0, sticky=tk.W+tk.N) # ====================== ret_indicator = tk.StringVar() ret_indicator.set("Result") lab_res = Label(frame, textvariable=ret_indicator) lab_res.grid(row=6,column=0, sticky=tk.W+tk.S) var_res = tk.StringVar() msg_res = Message(frame,textvariable=var_res, width=500) msg_res.grid(row=7,column=0, columnspan=2,sticky=tk.W+tk.E+tk.N) frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=1) def connect(): self.addr = ent_addr.get() portStr = ent_port.get() if self.addr == "": self.addr = "localhost" if portStr == "": self.port = 50000 else: self.port = int(portStr) (ret, info) = ec.connect(self.addr, self.port) if ret == 0: ret_indicator.set("Connection Succeeded") self.conn = info var_res.set("") else: ret_indicator.set("Connection Failed") var_res.set(info) def sendMsg(): msg = ent_msg.get("0.0", tk.END)[0:-1] print "msg to be sent is: " + repr(msg) (ret, info) = ec.sendMsg(self.conn, msg.encode('utf-8')) if ret == 0: ret_indicator.set("Send Succeeded") var_res.set("") else: ret_indicator.set("Send Failed") var_res.set(info) def sendNum(): msg = ent_num.get() print "msg to be sent is: " + repr(msg) (ret, info) = ec.sendNum(self.conn, int(msg)) if ret == 0: ret_indicator.set("Send Succeeded") var_res.set("") else: ret_indicator.set("Send Failed") var_res.set(info) def recvMsg(): (ret, info) = ec.recvMsg(self.conn) if ret == 0: ret_indicator.set("Receive Succeeded") else: ret_indicator.set("Receive Failed") var_res.set(info) def close(): (ret, info) = ec.close(self.conn) if ret == 0: ret_indicator.set("Close Succeeded") var_res.set("") else: ret_indicator.set("Close Failed") var_res.set(info) frame2 = Frame(self, relief=tk.RAISED, borderwidth=1) """Buttoms are always in the middle.""" frame2.columnconfigure(0, pad=10, weight=1) frame2.rowconfigure(0, weight=1000) frame2.rowconfigure(1, weight=1) frame2.rowconfigure(2, weight=1) frame2.rowconfigure(3, weight=1) frame2.rowconfigure(4, weight=1) frame2.rowconfigure(5, weight=1) frame2.rowconfigure(6, weight=1000) but_conn = Button(frame2, text="Connect", command=connect) but_conn.grid(row=1,column=0, sticky=tk.W+tk.E) but_send_msg = Button(frame2, text="Send Message", command=sendMsg) but_send_msg.grid(row=2,column=0, sticky=tk.W+tk.E) but_send_num = Button(frame2, text="Send Number", command=sendNum) but_send_num.grid(row=3,column=0, sticky=tk.W+tk.E) but_recv = Button(frame2, text="Receive", command=recvMsg) but_recv.grid(row=4,column=0, sticky=tk.W+tk.E) but_close = Button(frame2, text="Close", command=close) but_close.grid(row=5,column=0, sticky=tk.W+tk.E) frame2.pack(side=tk.LEFT, fill=tk.BOTH,expand=1) # expand=1 cannot be omitted self.pack(fill=tk.BOTH, expand=1)
class Example(Frame): def __init__(self, parent): self.catFactors = {} Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): if hasattr(self, 'frame0'): self.frame0.destroy() self.initUIRoot() self.initUIFrame() def initUIRoot(self): self.parent.title("集总模型") self.pack(fill=BOTH, expand=1) menubar = Menu(self.parent) self.parent.config(menu=menubar) self.frame0 = Frame(self, relief=RAISED) self.frame0.pack(fill=BOTH, expand=True) fileMenu = Menu(menubar) fileMenu.add_command(label=u"新建催化剂", command=self.onNewCata) fileMenu.add_command(label=u"精确预测", command=self.onNewPre) fileMenu.add_command(label=u"趋势预测", command=self.onNewGraph) fileMenu.add_command(label=u"最优条件预测", command=self.onNewBest) helpMenu = Menu(menubar) helpMenu.add_command(label=u"关于", command=self.onHelp) mainPageMenu = Menu(menubar) mainPageMenu.add_command(label=u"主页", command=self.initUI) menubar.add_cascade(label="主页", menu=mainPageMenu) menubar.add_cascade(label="操作", menu=fileMenu) menubar.add_cascade(label="帮助", menu=helpMenu) def initUIFrame(self): self.frame0.columnconfigure(0, pad=5, weight=1) self.frame0.columnconfigure(1, pad=5, weight=1) self.frame0.columnconfigure(2, pad=5, weight=1) self.frame0.columnconfigure(3, pad=5, weight=1) self.frame0.columnconfigure(4, pad=5, weight=1) self.frame0.columnconfigure(5, pad=5, weight=1) self.frame0.rowconfigure(0, pad=37) self.frame0.rowconfigure(1, pad=7) self.frame0.rowconfigure(2, pad=7, weight=1) titleImg = ImageTk.PhotoImage(file="./imgs/title.png") catImg = ImageTk.PhotoImage(file="./imgs/cat.png") preImg = ImageTk.PhotoImage(file="./imgs/pre.png") chartImg = ImageTk.PhotoImage(file="./imgs/chart.png") bestImg = ImageTk.PhotoImage(file="./imgs/bestPoint.png") rareImg = ImageTk.PhotoImage(file="./imgs/rare.png") lbl = Label(self.frame0, image=titleImg) lbl.grid(row=0, column=1,columnspan=5,sticky=S+W) lbl.image = titleImg lbl = Label(self.frame0, image=rareImg) lbl.grid(row=3, column=1,columnspan=5,sticky=S) lbl.image = rareImg preButton = Button(self.frame0, command=self.onNewPre) preButton.config(image=preImg) preButton.image = preImg preButton.grid(row=1, column=2) cateButton = Button(self.frame0, command=self.onNewCata) cateButton.config(image=catImg) cateButton.image = catImg cateButton.grid(row=1, column=1) chartButton = Button(self.frame0, command=self.onNewGraph) chartButton.config(image=chartImg) chartButton.image = chartImg chartButton.grid(row=1, column=3) chartButton = Button(self.frame0, command=self.onNewBest) chartButton.config(image=bestImg) chartButton.image = bestImg chartButton.grid(row=1, column=4) lbl = Label(self.frame0, text="新建催化剂") lbl.grid(row=2, column=1, sticky=N) lbl = Label(self.frame0, text="精确预测") lbl.grid(row=2, column=2, sticky=N) lbl = Label(self.frame0, text="趋势预测") lbl.grid(row=2, column=3, sticky=N) lbl = Label(self.frame0, text="最优条件预测") lbl.grid(row=2, column=4, sticky=N) def bestUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(11, pad=7, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, sticky=W, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度范围(K 英文逗号分割 )") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) if not self.catObj.withTemp: self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力范围(KPa 英文逗号分割)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比范围 (英文逗号分割)") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间范围(英文逗号分割s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="待预测组分编号(,)") lbl.grid(row=9, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.target = Entry(frame2) self.target.insert(0, '5,6,7') self.target.grid(row=9, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="结果组成") lbl.grid(row=0, column=7, columnspan=2, rowspan=1, pady=4, padx=5, sticky=W) self.preResult_LB = Listbox(frame2) self.preResult_LB.grid(row=1, column=7, columnspan=2, rowspan=8, pady=4, padx=5, sticky=W) lbl = Label(frame2, text="最优温度:") lbl.grid(row=0, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestT = Entry(frame2) self.bestT.delete(0, 'end') self.bestT.configure(state='readonly') self.bestT.grid(row=0, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="最优压力:") lbl.grid(row=1, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestP = Entry(frame2) self.bestP.delete(0, 'end') self.bestP.configure(state='readonly') self.bestP.grid(row=1, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="最优剂油比:") lbl.grid(row=2, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestR = Entry(frame2) self.bestR.delete(0, 'end') self.bestR.configure(state='readonly') self.bestR.grid(row=2, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="最优反应时间:") lbl.grid(row=3, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestTime = Entry(frame2) self.bestTime.delete(0, 'end') self.bestTime.configure(state='readonly') self.bestTime.grid(row=3, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="目标结果:") lbl.grid(row=4, column=9, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.bestSum = Entry(frame2) self.bestSum.delete(0, 'end') self.bestSum.configure(state='readonly') self.bestSum.grid(row=4, column=11, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测", command=self.doBest) cateDetailButton.grid(row=9, column=6, columnspan=2) def preUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(8, pad=7, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, sticky=W, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) if not self.catObj.withTemp: self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) self.preResult_LB = Listbox(frame2) self.preResult_LB.grid(row=1, column=7, columnspan=2, rowspan=6, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测", command=self.doPre) cateDetailButton.grid(row=8, column=7, columnspan=2) def cateUI(self): self.frame0.destroy() self.initUIRoot() frame4 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame4.pack(fill=BOTH) frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=True) frame1.columnconfigure(0, weight=1) # frame1.columnconfigure(9, weight=1) frame1.rowconfigure(0, weight=1) lbl = Label(frame4, text="已输入温度组数") lbl.grid(row=0, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.varCountT = StringVar() self.countT = Message(frame4, textvariable=self.varCountT) self.varCountT.set('0') self.countT.grid(row=0, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) factor_Tree = ttk.Treeview(frame1) factor_Tree['show'] = 'headings' factor_Tree["columns"] = ['t_resid', 't', 'r_oil', 'p', 'Y0', 'Y_results', 'w_aro', 'w_nitro'] # factor_Tree.heading("t", text="温度") factor_Tree.column("t", width=self.winfo_width() / 8) factor_Tree.heading("r_oil", text="剂油比") factor_Tree.column("r_oil", width=self.winfo_width() / 8) factor_Tree.heading("p", text="压力") factor_Tree.column("p", width=self.winfo_width() / 8) factor_Tree.heading("Y0", text="初始组成") factor_Tree.column("Y0", width=self.winfo_width() / 8) factor_Tree.heading("Y_results", text="产物组成") factor_Tree.column("Y_results", width=self.winfo_width() / 8) factor_Tree.heading("w_aro", text="重芳烃含量") factor_Tree.column("w_aro", width=self.winfo_width() / 8) factor_Tree.heading("w_nitro", text="碱氮含量") factor_Tree.column("w_nitro", width=self.winfo_width() / 8) factor_Tree.heading("t_resid", text="停留时间") factor_Tree.column("t_resid", width=self.winfo_width() / 8) factor_Tree.grid(row=0, column=0, pady=4, padx=5) self.factor_Tree = factor_Tree frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame2.columnconfigure(0, weight=1) frame2.columnconfigure(8, weight=1) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=0, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=0, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) self.T_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=0, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="产物组成(<1 英文逗号分割):") lbl.grid(row=1, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Y_results_input = Entry(frame2) self.Y_results_input.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=2, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=3, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=3, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="分子质量(逗号分割)") lbl.grid(row=4, column=4, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Molmasses_input = Entry(frame2) self.Molmasses_input.grid(row=4, column=6, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.Molmasses_input.insert('0.8,1.1,1.8,0.2,0.2,0.2,0.11,0.016,0.042,0.056,0.05,0.012') addButton = Button(frame2, command=self.addFactors, text="添加条件") addButton.grid(row=9, column=2, sticky=E) self.newCatButton = Button(frame2, command=self.newCata, text="开始计算", state=DISABLED) self.newCatButton.grid(row=9, column=6, sticky=E) def graphUI(self): self.frame0.destroy() self.initUIRoot() frame1 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame1.pack(fill=BOTH, expand=False) frame2 = Frame(self.frame0, relief=RAISED, borderwidth=1) frame2.pack(fill=BOTH, expand=True) frame1.columnconfigure(1, weight=1) # frame1.columnconfigure(9, weight=1) frame1.columnconfigure(10, pad=7) frame1.rowconfigure(5, weight=1) frame1.rowconfigure(5, pad=7) frame2.columnconfigure(8, pad=7, weight=1) frame2.columnconfigure(1, weight=1) frame2.columnconfigure(6, weight=1) frame2.rowconfigure(8, pad=7) lbl = Label(frame1, text="催化剂性质") lbl.grid(row=0, column=0, columnspan=8, rowspan=1, sticky=W, pady=4, padx=5) # K_Mat_Tree = ttk.Treeview(frame1) # K_Mat_Tree['show'] = 'headings' # K_Mat_Tree = self.makeMatrixUI(7, K_Mat_Tree, sourceDate.K_model) # K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=5, sticky=E + W + S + N, pady=4, padx=5) K_Mat_Tree = Text(frame1, height=18) self.makeMatrixUI(K_Mat_Tree, self.catObj) K_Mat_Tree.configure(state='normal') K_Mat_Tree.grid(row=1, column=0, columnspan=6, rowspan=6, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="优化方法:") lbl.grid(row=0, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.optMethod) txt.configure(state='readonly') txt.grid(row=0, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="集总数:") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.n) txt.configure(state='readonly') txt.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) lbl = Label(frame1, text="精确度:") lbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) txt = Entry(frame1) txt.insert(0, self.catObj.tol) txt.configure(state='readonly') txt.grid(row=2, column=8, columnspan=2, rowspan=1, sticky=E + W + S + N, pady=4, padx=5) cateDetailButton = Button(frame1, text="查看催化剂详情") cateDetailButton.grid(row=3, column=8) # ________________________________________ lbl = Label(frame2, text="待预测条件") lbl.grid(row=0, column=0, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="初始组成(<1 英文逗号分割):") lbl.grid(row=1, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.Y0_input = Entry(frame2) self.Y0_input.grid(row=1, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="温度(K)") lbl.grid(row=2, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.T_input = Entry(frame2) self.T_input.grid(row=2, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="压力(KPa)") lbl.grid(row=3, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.p_input = Entry(frame2) self.p_input.grid(row=3, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="剂油比") lbl.grid(row=4, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.roil_input = Entry(frame2) self.roil_input.grid(row=4, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="停留时间(s)") lbl.grid(row=5, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.t_input = Entry(frame2) self.t_input.grid(row=5, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="碱氮含量(<1)") lbl.grid(row=6, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.yn_input = Entry(frame2) self.yn_input.insert(0, 0.0) self.yn_input.grid(row=6, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="重芳烃含量(<1)") lbl.grid(row=7, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.ya_input = Entry(frame2) self.ya_input.grid(row=7, column=2, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="微分方程步长") lbl.grid(row=8, column=0, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.step_input = Entry(frame2) self.step_input.insert(0, 0.1) self.step_input.grid(row=8, column=2, columnspan=3, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="图表设置") lbl.grid(row=0, column=6, columnspan=5, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="条件变量") lbl.grid(row=1, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.var = ttk.Combobox(frame2, textvariable=StringVar()) if not self.catObj.withTemp: self.var['values'] = (u'压力', u'剂油比', u'停留时间') self.p_input.insert(0, 0) self.T_input.insert(0, self.catObj.t) self.T_input.configure(state='readonly') self.p_input.configure(state='readonly') self.lastVar = u'压力' else: self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state='readonly') self.var['values'] = (u'温度', u'压力', u'剂油比', u'停留时间', u'温度+压力',u'温度+剂油比',u'剂油比+压力') self.lastVar = u'温度' self.var.bind('<<ComboboxSelected>>', self.onSelecetedVar) self.var.current(0) self.var.grid(row=1, column=8, columnspan=2, rowspan=1, sticky=W, pady=4, padx=5) self.rangeLbl = Label(frame2, text="条件范围") self.rangeLbl.grid(row=2, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="上限") lbl.grid(row=3, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) lbl = Label(frame2, text="下限") lbl.grid(row=4, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.rangeMin = Entry(frame2) self.rangeMax = Entry(frame2) self.rangeMin.grid(row=3, column=8, columnspan=1, sticky=W, rowspan=1, pady=4, padx=5) self.rangeMax.grid(row=4, column=8, columnspan=1, sticky=W, rowspan=1, pady=4, padx=5) lbl = Label(frame2, text="结果集(英文逗号分割)") lbl.grid(row=5, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.chartResultId = Entry(frame2) self.chartResultId.insert(0, '1,2,3,4,5,6,7,8,9,10,11,12') self.chartResultId.grid(row=5, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="结果名(英文逗号分割\n尽量使用英文)") lbl.grid(row=6, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.chartResultName = Entry(frame2) #TODO,get the default value from lump model self.chartResultName.insert(0, 'HS,HA,HR,DIESEL,GS,GO,GA,DGAS,LO3,LO4,LPGD,COKE') self.chartResultName.grid(row=6, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) lbl = Label(frame2, text="点数") lbl.grid(row=7, column=6, columnspan=2, rowspan=1, sticky=E, pady=4, padx=5) self.stepNum = Entry(frame2) self.stepNum.grid(row=7, column=8, columnspan=3, rowspan=1, sticky=W, pady=4, padx=5) cateDetailButton = Button(frame2, text="预测趋势", command=self.doChart) cateDetailButton.grid(row=8, column=6, columnspan=2) def onSelecetedVar(self, event): varName = self.var.get() if self.lastVar == u'温度': # u'温度',,,u'停留时间' self.T_input.configure(state="normal") elif self.lastVar == u'压力': self.p_input.configure(state="normal") elif self.lastVar == u'剂油比': self.roil_input.configure(state="normal") elif self.lastVar == u'停留时间': self.t_input.configure(state="normal") elif self.lastVar == u'温度+压力': self.T_input.configure(state="normal") self.p_input.configure(state="normal") elif self.lastVar == u'温度+剂油比': self.roil_input.configure(state="normal") self.T_input.configure(state="normal") elif self.lastVar == u'剂油比+压力': self.roil_input.configure(state="normal") self.p_input.configure(state="normal") if varName == u'温度': self.rangeLbl.config(text='条件范围') self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state="readonly") elif varName == u'压力': self.rangeLbl.config(text='条件范围') self.p_input.delete(0, 'end') self.p_input.insert(0, 0) self.p_input.configure(state="readonly") elif varName == u'剂油比': self.rangeLbl.config(text='条件范围') self.roil_input.delete(0, 'end') self.roil_input.insert(0, 0) self.roil_input.configure(state="readonly") elif varName == u'停留时间': self.rangeLbl.config(text='条件范围') self.t_input.delete(0, 'end') self.t_input.insert(0, 0) self.t_input.configure(state="readonly") elif varName == u'温度+压力': self.rangeLbl.config(text='条件范围,格式:温度,压力') self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state="readonly") self.p_input.delete(0, 'end') self.p_input.insert(0, 0) self.p_input.configure(state="readonly") elif varName == u'温度+剂油比': self.rangeLbl.config(text='条件范围,格式:温度,剂油比') self.roil_input.delete(0, 'end') self.roil_input.insert(0, 0) self.roil_input.configure(state="readonly") self.T_input.delete(0, 'end') self.T_input.insert(0, 0) self.T_input.configure(state="readonly") elif varName == u'剂油比+压力': self.rangeLbl.config(text='条件范围,格式:剂油比,压力') self.roil_input.delete(0, 'end') self.roil_input.insert(0, 0) self.roil_input.configure(state="readonly") self.p_input.delete(0, 'end') self.p_input.insert(0, 0) self.p_input.configure(state="readonly") self.lastVar = varName def onNewCata(self): self.catFactors = {} ftypes = [('集总模型', '*.lp')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() # print flmakePreResultUI if fl != '': self.lumpObj = self.readFile(fl) print self.lumpObj self.cateUI() def onNewPre(self): ftypes = [('催化剂存档文件', '*.cat')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() print fl if fl != '': self.catObj = self.readFile(fl) self.preUI() def onNewBest(self): ftypes = [('催化剂存档文件', '*.cat')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() print fl if fl != '': self.catObj = self.readFile(fl) self.bestUI() def onNewGraph(self): ftypes = [('催化剂存档文件', '*.cat')] dlg = tkFileDialog.Open(self, filetypes=ftypes) fl = dlg.show() print fl if fl != '': self.catObj = self.readFile(fl) self.graphUI() def saveCate(self): ftypes = [('催化剂存档文件', '*.cat')] filename = tkFileDialog.asksaveasfilename(title='保存催化剂存档文件', defaultextension='.cat', filetypes=ftypes) return filename def onHelp(self): mbox.showinfo("集总模型软件", "中国石油\n兰州化工研究中心") def doPre(self): catObj = self.catObj t_resid = float(self.t_input.get()) p = float(self.p_input.get()) Y0 = numpy.mat(self.Y0_input.get().split(',')).astype(numpy.float) const_r = 8.3145 w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = float(self.T_input.get()) r_oil = float(self.roil_input.get()) stepLength = float(self.step_input.get()) n = catObj.n print [t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n] result = newPre(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, stepLength).tolist()[0] self.makePreResultUI(self.preResult_LB, result) def doBest(self): catObj = self.catObj t_resid = [float(self.t_input.get().split(',')[0]),float(self.t_input.get().split(',')[1])] p = [float(self.p_input.get().split(',')[0]),float(self.p_input.get().split(',')[1])] Y0 = numpy.mat(self.Y0_input.get().split(',')).astype(numpy.float) const_r = 8.3145 w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = [float(self.T_input.get().split(',')[0]),float(self.T_input.get().split(',')[1])] r_oil = [float(self.roil_input.get().split(',')[0]),float(self.roil_input.get().split(',')[1])] stepLength = float(self.step_input.get()) n = catObj.n target = self.target.get().split(',') print [t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n,target] result = newBest(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, stepLength,target) self.bestP.configure(state='normal') self.bestT.configure(state='normal') self.bestR.configure(state='normal') self.bestTime.configure(state='normal') self.bestSum.configure(state='normal') self.bestP.insert('end',round(result['bestP'], 4)) self.bestT.insert('end',round(result['bestT'], 4)) self.bestR.insert('end',round(result['bestR'], 4)) self.bestTime.insert('end',round(result['bestTime'], 4)) self.bestSum.insert('end',round(result['sum'], 4)) self.makePreResultUI(self.preResult_LB, result['Y']) def doChart(self): catObj = self.catObj t_resid = float(self.t_input.get()) p = float(self.p_input.get()) Y0 = numpy.mat(self.Y0_input.get().split(',')).astype(numpy.float) const_r = 8.3145 w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = float(self.T_input.get()) r_oil = float(self.roil_input.get()) stepNum = int(self.stepNum.get()) resultId = self.chartResultId.get() resultName = self.chartResultName.get() stepLength = float(self.step_input.get()) n = catObj.n varName = '' if self.lastVar == u'温度': varName = 't' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'压力': varName = 'p' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'剂油比': varName = 'r' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'停留时间': varName = 'time' varMin = float(self.rangeMin.get()) varMax = float(self.rangeMax.get()) elif self.lastVar == u'温度+压力': varName = 't,p'.split(',') varMin = self.rangeMin.get().split(',') varMax = self.rangeMax.get().split(',') elif self.lastVar == u'温度+剂油比': varName = 't,r'.split(',') varMin = self.rangeMin.get().split(',') varMax = self.rangeMax.get().split(',') elif self.lastVar == u'剂油比+压力': varName = 'r,p'.split(',') varMin = self.rangeMin.get().split(',') varMax = self.rangeMax.get().split(',') chartConfig = {} chartConfig['varName'] = varName chartConfig['stepNum'] = stepNum chartConfig['varMin'] = varMin chartConfig['varMax'] = varMax chartConfig['resultId'] = resultId chartConfig['resultName'] = resultName # t_resid=3 # p=175 # const_r=8.3145 # Y0=mat([0.481,0.472,0.047,0,0,0,0]) # w_aro=0.472 # w_nitro=0 # t=685 # n=7 # r_oil=8.79 # chartConfig={'varName': 'time', 'varMax': 0.001, 'varMin': 15.0, 'resultId': '1,2,3,4,5,6,7', 'stepNum': 100,'resultName':u'Hs,Ha,Hr,柴油,汽油,气体,焦炭'} print chartConfig print [catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, chartConfig] if len(varName)>1: result = new3dChart(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, chartConfig, stepLength) else: result = new2dChart(catObj, t_resid, p, Y0, const_r, w_aro, w_nitro, t, r_oil, n, chartConfig, stepLength) def addFactors(self): t_resid = float(self.t_input.get()) p = float(self.p_input.get()) Y0_raw = self.Y0_input.get() Y0 = numpy.mat(Y0_raw.split(',')).astype(numpy.float) Y_results_raw = self.Y_results_input.get() Y_results = numpy.mat(Y_results_raw.split(',')).astype(numpy.float) w_aro = float(self.ya_input.get()) w_nitro = float(self.yn_input.get()) t = float(self.T_input.get()) r_oil = float(self.roil_input.get()) self.Molmasses = numpy.mat(self.Molmasses_input.get().split(',')).astype(numpy.float) self.factor_Tree.insert('', END, values=[t_resid, t, r_oil, p, Y0_raw, Y_results_raw, w_aro, w_nitro]) if self.catFactors.has_key(t): self.catFactors[t].append( {'t_resid': t_resid, 't': t, 'r_oil': r_oil, 'p': p, 'Y0': Y0, 'Y_results': Y_results, 'w_aro': w_aro, 'w_nitro': w_nitro}) else: self.catFactors[t] = [ {'t_resid': t_resid, 't': t, 'r_oil': r_oil, 'p': p, 'Y0': Y0, 'Y_results': Y_results, 'w_aro': w_aro, 'w_nitro': w_nitro}] print self.catFactors self.varCountT.set(len(self.catFactors)) self.Molmasses_input.configure(state='readonly') self.newCatButton.configure(state='active') def newCata(self): filename = self.saveCate() print filename if len(self.catFactors) == 1: newCatNoKa(filename, self.lumpObj, 1, 0, 1, self.lumpObj, self.Molmasses, self.catFactors.values()[0], 'L-BFGS-B', 1e-5, self.lumpObj.shape[0]) else: newCatWithKa(filename, self.lumpObj, 1, 0, 1, self.lumpObj, self.Molmasses, self.catFactors, 'L-BFGS-B', 1e-5, self.lumpObj.shape[0]) def makeMatrixUI(self, targetTree, catObj): n = catObj.n if not catObj.withTemp: targetTree.insert('end', '催化剂模型是在同一温度下,只能计算K\n------------------\nK=\n') K = numpy.around(self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['K_result'], 4) self.makeMatrixOutput(n, targetTree, K) targetTree.insert('end', '\n------------------\n重芳烃影响因数:\n') targetTree.insert('end', self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['Ka']) targetTree.insert('end', '\n------------------\n碱氮影响因数:\n') targetTree.insert('end', self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['Kn']) targetTree.insert('end', '\n------------------\n') else: K = self.makeMatrixByResult(catObj.K_model, catObj.X0_result, catObj.n)['K_result'] print catObj.X0_result Ka = numpy.around(self.makeMatrixByResult(catObj.K_model, catObj.Ka, catObj.n)['K_result'], 4) print catObj.Ka Ea = numpy.around(self.makeMatrixByResult(catObj.K_model, catObj.Ea, catObj.n)['K_result'], 4) print catObj.Ea targetTree.insert('end', '\n------------------\nK=\n') print len(K) for i in K: self.makeMatrixOutput(n, targetTree, numpy.round(i, 4)) targetTree.insert('end', '\n------------------\n') targetTree.insert('end', '\n------------------\nKa=\n') self.makeMatrixOutput(n, targetTree, Ka) targetTree.insert('end', '\n------------------\n') targetTree.insert('end', '\n------------------\nEa=\n') self.makeMatrixOutput(n, targetTree, Ea) targetTree.insert('end', '\n------------------\n') def makeMatrixOutput(self, n, targetTree, mat): for i in range(n): targetTree.insert('end', ','.join(mat[i].astype(numpy.string_).tolist())) targetTree.insert('end', '\n') return targetTree def makeMatrixByResult(self, K_model, result, n): if type(result) != type([]): K = result[:-3].tolist() args = result[-3:] K_raw_result = [] for i in K_model.T.flat: if i: K_raw_result.append(K.pop(0)) else: K_raw_result.append(0) K_result = reshape(K_raw_result, (n, n)).T.T.T ka_result, kn_result, cata_result = args return {'K_result': K_result, 'ka_result': ka_result, 'kn_result': kn_result, 'cata_result': cata_result} else: K_results = [] args = result[0][-3:] for i in result: K = i[:-3].tolist() K_raw_result = [] for i in K_model.T.flat: if i: K_raw_result.append(K.pop(0)) else: K_raw_result.append(0) K_result = reshape(K_raw_result, (n, n)).T.T.T K_results.append(K_result) ka_result, kn_result, cata_result = args return {'K_result': K_results, 'ka_result': ka_result, 'kn_result': kn_result, 'cata_result': cata_result} def makePreResultUI(self, target, result): target.delete(0, END) if type(result)!=type([]): result=result.tolist()[0] for i in result: target.insert(END, round(i, 3)) return target def readFile(self, filename): f = open(filename, "r") obj = pickle.load(f) return obj
def smallentryframetextv(f,r,c,v,w,t,p=0): e = smallentry(f,v,w) m = Message(f,text=t, bg=Styles.colours["grey"],width=100) m.grid(row=r,column=c,padx=p,sticky=W) e.grid(row=r+1,column=c,sticky=W,padx=3) return (m,e)
def infov(f, text,textv,row,col): m = Message(f, text=text, font=Styles.fonts["h2"], bg=Styles.colours["grey"],width=200) v = Message(f, text=textv, font=Styles.fonts["h3"], bg=Styles.colours["grey"],width=200) m.grid(row=row,column=col) v.grid(row=row+1,column=col) return (m,v)
def initUI(self): self.parent.title("Client") frame = Frame(self, relief=tk.RAISED, borderwidth=1) # The width of the first column gets almost no change. frame.columnconfigure(0, pad=10, weight=1) frame.columnconfigure(1, pad=10, weight=1000) lbl_addr = Label(frame, text="Address") lbl_addr.grid(row=0, column=0, sticky=tk.W + tk.S) lbl_port = Label(frame, text="Port") lbl_port.grid(row=0, column=1, sticky=tk.W + tk.S) ent_addr = Entry(frame, width=15) ent_addr.grid(row=1, column=0, sticky=tk.W + tk.N) ent_port = Entry(frame, width=6) ent_port.grid(row=1, column=1, sticky=tk.W + tk.N) lbl_msg = Label(frame, text="Input Message", anchor=tk.E) lbl_msg.grid(row=2, column=0, sticky=tk.W + tk.S) ent_msg = Text(frame, width=30, height=4) ent_msg.grid(row=3, column=0, columnspan=2, sticky=tk.W + tk.E + tk.N) # sticky can be used to expand lbl_num = Label(frame, text="Input Number") lbl_num.grid(row=4, column=0, sticky=tk.W + tk.S) ent_num = Entry(frame, width=6) ent_num.grid(row=5, column=0, sticky=tk.W + tk.N) # ====================== ret_indicator = tk.StringVar() ret_indicator.set("Result") lab_res = Label(frame, textvariable=ret_indicator) lab_res.grid(row=6, column=0, sticky=tk.W + tk.S) var_res = tk.StringVar() msg_res = Message(frame, textvariable=var_res, width=500) msg_res.grid(row=7, column=0, columnspan=2, sticky=tk.W + tk.E + tk.N) frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=1) def connect(): self.addr = ent_addr.get() portStr = ent_port.get() if self.addr == "": self.addr = "localhost" if portStr == "": self.port = 50000 else: self.port = int(portStr) (ret, info) = ec.connect(self.addr, self.port) if ret == 0: ret_indicator.set("Connection Succeeded") self.conn = info var_res.set("") else: ret_indicator.set("Connection Failed") var_res.set(info) def sendMsg(): msg = ent_msg.get("0.0", tk.END)[0:-1] print "msg to be sent is: " + repr(msg) (ret, info) = ec.sendMsg(self.conn, msg.encode('utf-8')) if ret == 0: ret_indicator.set("Send Succeeded") var_res.set("") else: ret_indicator.set("Send Failed") var_res.set(info) def sendNum(): msg = ent_num.get() print "msg to be sent is: " + repr(msg) (ret, info) = ec.sendNum(self.conn, int(msg)) if ret == 0: ret_indicator.set("Send Succeeded") var_res.set("") else: ret_indicator.set("Send Failed") var_res.set(info) def recvMsg(): (ret, info) = ec.recvMsg(self.conn) if ret == 0: ret_indicator.set("Receive Succeeded") else: ret_indicator.set("Receive Failed") var_res.set(info) def close(): (ret, info) = ec.close(self.conn) if ret == 0: ret_indicator.set("Close Succeeded") var_res.set("") else: ret_indicator.set("Close Failed") var_res.set(info) frame2 = Frame(self, relief=tk.RAISED, borderwidth=1) """Buttoms are always in the middle.""" frame2.columnconfigure(0, pad=10, weight=1) frame2.rowconfigure(0, weight=1000) frame2.rowconfigure(1, weight=1) frame2.rowconfigure(2, weight=1) frame2.rowconfigure(3, weight=1) frame2.rowconfigure(4, weight=1) frame2.rowconfigure(5, weight=1) frame2.rowconfigure(6, weight=1000) but_conn = Button(frame2, text="Connect", command=connect) but_conn.grid(row=1, column=0, sticky=tk.W + tk.E) but_send_msg = Button(frame2, text="Send Message", command=sendMsg) but_send_msg.grid(row=2, column=0, sticky=tk.W + tk.E) but_send_num = Button(frame2, text="Send Number", command=sendNum) but_send_num.grid(row=3, column=0, sticky=tk.W + tk.E) but_recv = Button(frame2, text="Receive", command=recvMsg) but_recv.grid(row=4, column=0, sticky=tk.W + tk.E) but_close = Button(frame2, text="Close", command=close) but_close.grid(row=5, column=0, sticky=tk.W + tk.E) frame2.pack(side=tk.LEFT, fill=tk.BOTH, expand=1) # expand=1 cannot be omitted self.pack(fill=tk.BOTH, expand=1)
class Tool_Path_Generator: def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#e6e6e6' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' font11 = "-size 15 -weight normal -slant roman " \ "-underline 0 -overstrike 0" self.axial_length = DoubleVar() self.printbed_diameter = DoubleVar() self.final_diameter = DoubleVar() self.filament_width_og = DoubleVar() self.helix_angle = DoubleVar() self.smear_factor = DoubleVar() self.flow_rate = DoubleVar() self.uv_offset = DoubleVar() self.use_strong_pattern = BooleanVar() self.axial_length.set(200.0) self.printbed_diameter.set(10.0) self.final_diameter.set(15.0) self.filament_width_og.set(0.41) self.helix_angle.set(45.0) self.smear_factor.set(100.0) self.flow_rate.set(0.0015) self.uv_offset.set(32.5) self.use_strong_pattern.set(True) top.geometry("700x550") top.title("SkelePrint Tool Path Generator") top.configure(background="#e6e6e6") top.configure(highlightbackground="#e6e6e6") top.configure(highlightcolor="black") self.Label7 = Label(top) self.Label7.grid(row=0, column=0, sticky=W) self.Label7.configure(background="#e6e6e6") self.Label7.configure(font=font11) self.Label7.configure(foreground="#000000") self.Label7.configure(text='''SkelePrint Tool Path Generator''') self.Labelframe1 = LabelFrame(top) self.Labelframe1.grid(row=1, column=0, sticky=N+S) self.Labelframe1.configure(relief=GROOVE) self.Labelframe1.configure(foreground="black") self.Labelframe1.configure(text='''Dimensions''') self.Labelframe1.configure(background="#e6e6e6") self.Labelframe1.configure(highlightbackground="#e6e6e6") self.Labelframe1.configure(highlightcolor="black") self.axial_length_entry = Entry(self.Labelframe1) self.axial_length_entry.grid(row=0, column=1) self.axial_length_entry.configure(background="white") self.axial_length_entry.configure(font="TkFixedFont") self.axial_length_entry.configure(foreground="#000000") self.axial_length_entry.configure(highlightbackground="#e6e6e6") self.axial_length_entry.configure(highlightcolor="black") self.axial_length_entry.configure(insertbackground="black") self.axial_length_entry.configure(selectbackground="#c4c4c4") self.axial_length_entry.configure(selectforeground="black") self.axial_length_entry.configure(textvariable=self.axial_length) self.Label1 = Label(self.Labelframe1) self.Label1.grid(row=0, column=0, sticky=E) self.Label1.configure(activebackground="#e6e6e6") self.Label1.configure(activeforeground="black") self.Label1.configure(background="#e6e6e6") self.Label1.configure(foreground="#000000") self.Label1.configure(highlightbackground="#e6e6e6") self.Label1.configure(highlightcolor="black") self.Label1.configure(text='''Axial Length''') self.Label2 = Label(self.Labelframe1) self.Label2.grid(row=0, column=2, sticky=W) self.Label2.configure(activebackground="#e6e6e6") self.Label2.configure(activeforeground="black") self.Label2.configure(background="#e6e6e6") self.Label2.configure(disabledforeground="#e6e6e6") self.Label2.configure(foreground="#000000") self.Label2.configure(highlightbackground="#e6e6e6") self.Label2.configure(highlightcolor="black") self.Label2.configure(text='''mm''') self.Label3 = Label(self.Labelframe1) self.Label3.grid(row=1, column=0, sticky=E) self.Label3.configure(activebackground="#e6e6e6") self.Label3.configure(activeforeground="black") self.Label3.configure(background="#e6e6e6") self.Label3.configure(foreground="#000000") self.Label3.configure(highlightbackground="#e6e6e6") self.Label3.configure(highlightcolor="black") self.Label3.configure(text='''Printbed Diameter''') self.Entry2 = Entry(self.Labelframe1) self.Entry2.grid(row=1, column=1) self.Entry2.configure(background="white") self.Entry2.configure(font="TkFixedFont") self.Entry2.configure(foreground="#000000") self.Entry2.configure(highlightbackground="#e6e6e6") self.Entry2.configure(highlightcolor="black") self.Entry2.configure(insertbackground="black") self.Entry2.configure(selectbackground="#c4c4c4") self.Entry2.configure(selectforeground="black") self.Entry2.configure(textvariable=self.printbed_diameter) self.Label4 = Label(self.Labelframe1) self.Label4.grid(row=1, column=2, sticky=W) self.Label4.configure(activebackground="#e6e6e6") self.Label4.configure(activeforeground="black") self.Label4.configure(background="#e6e6e6") self.Label4.configure(foreground="#000000") self.Label4.configure(highlightbackground="#e6e6e6") self.Label4.configure(highlightcolor="black") self.Label4.configure(text='''mm''') self.Label5 = Label(self.Labelframe1) self.Label5.grid(row=2, column=0, sticky=E) self.Label5.configure(activebackground="#e6e6e6") self.Label5.configure(activeforeground="black") self.Label5.configure(background="#e6e6e6") self.Label5.configure(foreground="#000000") self.Label5.configure(highlightbackground="#e6e6e6") self.Label5.configure(highlightcolor="black") self.Label5.configure(text='''Final Print Diameter''') self.final_diameter_entry = Entry(self.Labelframe1) self.final_diameter_entry.grid(row=2, column=1) self.final_diameter_entry.configure(background="white") self.final_diameter_entry.configure(font="TkFixedFont") self.final_diameter_entry.configure(foreground="#000000") self.final_diameter_entry.configure(highlightbackground="#e6e6e6") self.final_diameter_entry.configure(highlightcolor="black") self.final_diameter_entry.configure(insertbackground="black") self.final_diameter_entry.configure(selectbackground="#c4c4c4") self.final_diameter_entry.configure(selectforeground="black") self.final_diameter_entry.configure(textvariable=self.final_diameter) self.Label6 = Label(self.Labelframe1) self.Label6.grid(row=2, column=2, sticky=W) self.Label6.configure(activebackground="#e6e6e6") self.Label6.configure(activeforeground="black") self.Label6.configure(background="#e6e6e6") self.Label6.configure(foreground="#000000") self.Label6.configure(highlightbackground="#e6e6e6") self.Label6.configure(highlightcolor="black") self.Label6.configure(text='''mm''') self.Entry4 = Entry(self.Labelframe1) self.Entry4.grid(row=3, column=1) self.Entry4.configure(background="white") self.Entry4.configure(font="TkFixedFont") self.Entry4.configure(foreground="#000000") self.Entry4.configure(highlightbackground="#e6e6e6") self.Entry4.configure(highlightcolor="black") self.Entry4.configure(insertbackground="black") self.Entry4.configure(selectbackground="#c4c4c4") self.Entry4.configure(selectforeground="black") self.Entry4.configure(textvariable=self.filament_width_og) self.Label7 = Label(self.Labelframe1) self.Label7.grid(row=3, column=2, sticky=W) self.Label7.configure(activebackground="#e6e6e6") self.Label7.configure(activeforeground="black") self.Label7.configure(background="#e6e6e6") self.Label7.configure(foreground="#000000") self.Label7.configure(highlightbackground="#e6e6e6") self.Label7.configure(highlightcolor="black") self.Label7.configure(text='''mm''') self.Label8 = Label(self.Labelframe1) self.Label8.grid(row=3, column=0, sticky=E) self.Label8.configure(activebackground="#e6e6e6") self.Label8.configure(activeforeground="black") self.Label8.configure(background="#e6e6e6") self.Label8.configure(foreground="#000000") self.Label8.configure(highlightbackground="#e6e6e6") self.Label8.configure(highlightcolor="black") self.Label8.configure(text='''Filament Width''') self.tip = Label(self.Labelframe1, width=300, height=300) __location__ = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) img = Image.open(os.path.join(__location__, 'dimensions.png')) one = ImageTk.PhotoImage(img) self.tip = Label(self.Labelframe1, image=one) self.tip.image = one self.tip.configure(background="#e6e6e6") self.tip.grid(row=4, columnspan=3) self.Labelframe2 = LabelFrame(top) self.Labelframe2.grid(row=1, column=1, sticky=N+S) self.Labelframe2.configure(relief=GROOVE) self.Labelframe2.configure(foreground="black") self.Labelframe2.configure(text='''Print Properties''') self.Labelframe2.configure(background="#e6e6e6") self.Labelframe2.configure(highlightbackground="#e6e6e6") self.Labelframe2.configure(highlightcolor="black") self.Label9 = Label(self.Labelframe2) self.Label9.grid(row=0, column=0, sticky=E) self.Label9.configure(activebackground="#e6e6e6") self.Label9.configure(activeforeground="black") self.Label9.configure(background="#e6e6e6") self.Label9.configure(foreground="#000000") self.Label9.configure(highlightbackground="#e6e6e6") self.Label9.configure(highlightcolor="black") self.Label9.configure(text='''Helix Angle''') self.Entry5 = Entry(self.Labelframe2) self.Entry5.grid(row=0, column=1) self.Entry5.configure(background="white") self.Entry5.configure(font="TkFixedFont") self.Entry5.configure(foreground="#000000") self.Entry5.configure(highlightbackground="#e6e6e6") self.Entry5.configure(highlightcolor="black") self.Entry5.configure(insertbackground="black") self.Entry5.configure(selectbackground="#c4c4c4") self.Entry5.configure(selectforeground="black") self.Entry5.configure(textvariable=self.helix_angle) self.Label10 = Label(self.Labelframe2) self.Label10.grid(row=0, column=2, sticky=W) self.Label10.configure(activebackground="#e6e6e6") self.Label10.configure(activeforeground="black") self.Label10.configure(background="#e6e6e6") self.Label10.configure(foreground="#000000") self.Label10.configure(highlightbackground="#e6e6e6") self.Label10.configure(highlightcolor="black") self.Label10.configure(text='''degrees [0 - 90]''') self.strong_targeter_button = Radiobutton(self.Labelframe2) self.strong_targeter_button.grid(row=1, column=0, sticky=E) self.strong_targeter_button.configure(variable=self.use_strong_pattern) self.strong_targeter_button.configure(value=True) self.strong_targeter_button.configure(activebackground="#e6e6e6") self.strong_targeter_button.configure(activeforeground="black") self.strong_targeter_button.configure(background="#e6e6e6") self.strong_targeter_button.configure(foreground="#000000") self.strong_targeter_button.configure(highlightbackground="#e6e6e6") self.strong_targeter_button.configure(highlightcolor="black") self.strong_targeter_label = Label(self.Labelframe2) self.strong_targeter_label.grid(row=1, column=1, sticky=W) self.strong_targeter_label.configure(activebackground="#e6e6e6") self.strong_targeter_label.configure(activeforeground="black") self.strong_targeter_label.configure(background="#e6e6e6") self.strong_targeter_label.configure(foreground="#000000") self.strong_targeter_label.configure(highlightbackground="#e6e6e6") self.strong_targeter_label.configure(highlightcolor="black") self.strong_targeter_label.configure(text="Strong angle pattern") self.default_targeter_button = Radiobutton(self.Labelframe2) self.default_targeter_button.grid(row=2, column=0, sticky=E) self.default_targeter_button.configure(activebackground="#e6e6e6") self.default_targeter_button.configure(activeforeground="black") self.default_targeter_button.configure(background="#e6e6e6") self.default_targeter_button.configure(foreground="#000000") self.default_targeter_button.configure(highlightbackground="#e6e6e6") self.default_targeter_button.configure(highlightcolor="black") self.default_targeter_button.configure( variable=self.use_strong_pattern) self.default_targeter_button.configure(value=False) self.default_targeter_label = Label(self.Labelframe2) self.default_targeter_label.grid(row=2, column=1, sticky=W) self.default_targeter_label.configure(activebackground="#e6e6e6") self.default_targeter_label.configure(activeforeground="black") self.default_targeter_label.configure(background="#e6e6e6") self.default_targeter_label.configure(foreground="#000000") self.default_targeter_label.configure(highlightbackground="#e6e6e6") self.default_targeter_label.configure(highlightcolor="black") self.default_targeter_label.configure(text="Default angle pattern") self.Scale1 = Scale(self.Labelframe2) self.Scale1.grid(row=5, column=1, columnspan=2, sticky=S+W) self.Scale1.configure(activebackground="#e6e6e6") self.Scale1.configure(background="#e6e6e6") self.Scale1.configure(font="TkTextFont") self.Scale1.configure(foreground="#000000") self.Scale1.configure(from_="5.0") self.Scale1.configure(highlightbackground="#d9d9d9") self.Scale1.configure(highlightcolor="black") self.Scale1.configure(length="150") self.Scale1.configure(orient="horizontal") self.Scale1.configure(resolution="5.0") self.Scale1.configure(troughcolor="#d9d9d9") self.Scale1.configure(variable=self.smear_factor) self.Label8 = Label(self.Labelframe2) self.Label8.grid(row=3, column=0, sticky=E) self.Label8.configure(background="#e6e6e6") self.Label8.configure(foreground="#000000") self.Label8.configure(text='''Flow rate''') self.Entry6 = Entry(self.Labelframe2) self.Entry6.grid(row=3, column=1) self.Entry6.configure(background="white") self.Entry6.configure(font="TkFixedFont") self.Entry6.configure(foreground="#000000") self.Entry6.configure(highlightbackground="#e6e6e6") self.Entry6.configure(highlightcolor="black") self.Entry6.configure(insertbackground="black") self.Entry6.configure(selectbackground="#c4c4c4") self.Entry6.configure(selectforeground="black") self.Entry6.configure(textvariable=self.flow_rate) self.Label12 = Label(self.Labelframe2) self.Label12.grid(row=3, column=2, sticky=W) self.Label12.configure(activebackground="#e6e6e6") self.Label12.configure(activeforeground="black") self.Label12.configure(background="#e6e6e6") self.Label12.configure(foreground="#000000") self.Label12.configure(highlightbackground="#d9d9d9") self.Label12.configure(highlightcolor="black") self.Label12.configure(text='''cm^3 / s''') self.uv_label = Label(self.Labelframe2) self.uv_label.grid(row=4, column=0, sticky=E) self.uv_label.configure(activebackground="#e6e6e6") self.uv_label.configure(activeforeground="black") self.uv_label.configure(background="#e6e6e6") self.uv_label.configure(foreground="#000000") self.uv_label.configure(highlightbackground="#d9d9d9") self.uv_label.configure(highlightcolor="black") self.uv_label.configure(text="UV Distance") self.uv_entry = Entry(self.Labelframe2) self.uv_entry.grid(row=4, column=1) self.uv_entry.configure(background="white") self.uv_entry.configure(font="TkFixedFont") self.uv_entry.configure(foreground="#000000") self.uv_entry.configure(highlightbackground="#e6e6e6") self.uv_entry.configure(highlightcolor="black") self.uv_entry.configure(insertbackground="black") self.uv_entry.configure(selectbackground="#c4c4c4") self.uv_entry.configure(selectforeground="black") self.uv_entry.configure(textvariable=self.uv_offset) self.uv_label_2 = Label(self.Labelframe2) self.uv_label_2.grid(row=4, column=2, sticky=W) self.uv_label_2.configure(activebackground="#e6e6e6") self.uv_label_2.configure(activeforeground="black") self.uv_label_2.configure(background="#e6e6e6") self.uv_label_2.configure(foreground="#000000") self.uv_label_2.configure(highlightbackground="#d9d9d9") self.uv_label_2.configure(highlightcolor="black") self.uv_label_2.configure(text='''mm''') self.Label11 = Label(self.Labelframe2) self.Label11.grid(row=5, column=0, sticky=S+E) self.Label11.configure(activebackground="#e6e6e6") self.Label11.configure(activeforeground="black") self.Label11.configure(background="#e6e6e6") self.Label11.configure(foreground="#000000") self.Label11.configure(highlightbackground="#d9d9d9") self.Label11.configure(highlightcolor="black") self.Label11.configure(text='''Layer Height %''') self.Label13 = Label(self.Labelframe2) self.Label13.grid(row=6, columnspan=3) self.Label13.configure(activebackground="#f9f9f9") self.Label13.configure(activeforeground="black") self.Label13.configure(background="#e6e6e6") self.Label13.configure(foreground="#000000") self.Label13.configure(highlightbackground="#d9d9d9") self.Label13.configure(highlightcolor="black") self.Label13.configure(text='''caution: layer height % is experimental default = 100% (ie. layer height = filament width)''') self.Message1 = Message(self.Labelframe2) self.Message1.grid(row=8, columnspan=3) self.Message1.configure(anchor=N) self.Message1.configure(background="#e6e6e6") self.Message1.configure(foreground="#000000") self.Message1.configure(highlightbackground="#e6e6e6") self.Message1.configure(highlightcolor="black") self.Message1.configure(text='''Helix Angle Conditions: If the angle is > 90, it will be set to 90 degrees If angle is < 0, it will be set to 0 degrees If angle = 0, the layer will consist of a single helix printed as close \ together as possible If angle = 90, the layer will consist of many straight lines''') self.tip2 = Label(self.Labelframe2, width=300, height=91) img2 = Image.open(os.path.join(__location__, 'theta.jpg')) two = ImageTk.PhotoImage(img2) self.tip2 = Label(self.Labelframe2, image=two) self.tip2.image = two self.tip2.configure(background="#e6e6e6") self.tip2.grid(row=7, columnspan=3) self.Label8 = Label(top) self.Label8.grid(row=5, columnspan=2) self.Label8.configure(background="#e6e6e6") self.Label8.configure(foreground="#000000") self.Label8.configure(text='''G Code file will be saved on your Desktop under: "gcode/timestamp_skeleprint_gcode.gcode"''') self.Button1 = Button(top) self.Button1.grid(row=2, columnspan=2) self.Button1.configure(activebackground="#e6e6e6") self.Button1.configure(activeforeground="#e6e6e6") self.Button1.configure(background="#e6e6e6") self.Button1.configure(command=lambda: tpg_gui_support.tpg( self.axial_length.get(), self.filament_width_og.get(), self.printbed_diameter.get(), self.final_diameter.get(), self.helix_angle.get(), self.smear_factor.get(), self.flow_rate.get(), self.uv_offset.get(), self.use_strong_pattern.get())) self.Button1.configure(foreground="#000000") self.Button1.configure(highlightbackground="#e6e6e6") self.Button1.configure(highlightcolor="black") self.Button1.configure(relief=RAISED) self.Button1.configure(text='''Generate G Code''') self.menubar = Menu(top, font="TkMenuFont", bg=_bgcolor, fg=_fgcolor) top.configure(menu=self.menubar)