def initUI(self): self.parent.title("Review") self.pack(fill=BOTH, expand=True) frame1 = Frame(self) frame1.pack(fill=X) lbl1 = Label(frame1, text="Title", width=6) lbl1.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1) entry1.pack(fill=X, padx=5, expand=True) frame2 = Frame(self) frame2.pack(fill=X) lbl2 = Label(frame2, text="Author", width=6) lbl2.pack(side=LEFT, padx=5, pady=5) entry2 = Entry(frame2) entry2.pack(fill=X, padx=5, expand=True) frame3 = Frame(self) frame3.pack(fill=BOTH, expand=True) lbl3 = Label(frame3, text="Review", width=6) lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5) txt = Text(frame3) txt.pack(fill=BOTH, pady=5, padx=5, expand=True)
class Login(Frame): """******** Funcion: __init__ ************** Descripcion: Constructor de Login Parametros: self Login parent Tk Retorno: void *****************************************************""" def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() """******** Funcion: initUI ************** Descripcion: Inicia la interfaz grafica de un Login, para ello hace uso de Frames y Widgets. Parametros: self Login Retorno: void *****************************************************""" def initUI(self): self.parent.title("Pythagram: Login") self.style = Style() self.style.theme_use("default") self.frame = Frame(self, relief=RAISED) self.frame.pack(fill=BOTH, expand=1) self.instructions = Label(self.frame,text="A new Web Browser window will open, you must log-in and accept the permissions to use this app.\nThen you have to copy the code that appears and paste it on the next text box.") self.instructions.pack(fill=BOTH, padx=5,pady=5) self.codeLabel = Label(self.frame,text="Code:") self.codeLabel.pack(fill=BOTH, padx=5,pady=5) self.codeEntry = Entry(self.frame) self.codeEntry.pack(fill=BOTH, padx=5,pady=5) self.pack(fill=BOTH, expand=1) self.closeButton = Button(self, text="Cancel", command=self.quit) self.closeButton.pack(side=RIGHT, padx=5, pady=5) self.okButton = Button(self, text="OK", command=self.login) self.okButton.pack(side=RIGHT) """******** Funcion: login ************** Descripcion: Luego que el usuario ingresa su codigo de acceso, hace la solicitud al servidor para cargar su cuenta en una ventana de tipo Profile Parametros: self Retorno: Retorna... *****************************************************""" def login(self): code = self.codeEntry.get() api = InstagramAPI(code) raw = api.call_resource('users', 'info', user_id='self') data = raw['data'] self.newWindow = Toplevel(self.parent) global GlobalID GlobalID = data['id'] p = Profile(self.newWindow,api,data['id'])
def initUI(self): self.parent.title("Test the Gauss point") self.pack(fill=BOTH, expand=True) self.fields = \ 'bulk_modulus', \ 'scale_hardening', \ 'max_stress_in', \ 'increment_strain', \ 'Nloop', \ 'initial_confinement', \ 'reference_pressure', \ 'modulus_n', \ 'cohesion', \ 'RMC_shape_k', \ 'dilation_angle_eta', \ 'diletion_scale' default_values = \ '1E7', \ '1E3', \ '3E4', \ '1E-4', \ '2', \ '1E5', \ '1E5', \ '0.7', \ '0.0', \ '1.0', \ '1.0', \ '1.0' # ================== # Entries for User input: self.entries = [] for idx, field in enumerate(self.fields): row = Frame(self) row.pack(fill=X) labl = Label(row, text=field, width=30) labl.pack(side=LEFT, padx=5, pady=5) entry = Entry(row) entry.insert(END, default_values[idx]) entry.pack(fill=X, padx=5, expand=True) self.entries.append((field, entry)) # print field # ================== # Button for calculation frameButtonCalc = Frame(self) frameButtonCalc.pack(fill=X) calcButton = Button(frameButtonCalc, text="calculate", command=self.calculate) calcButton.pack(side=LEFT, padx=5, pady=5) # ================== # Raw Frame for plot self.canvasFrame = Frame(self) self.canvasFrame.pack(fill=BOTH, expand=True)
def initUI(self): self.parent.title("Review") self.pack(fill=BOTH, expand=True) frame1 = Frame(self) frame1.pack(fill=X) lbl1 = Label(frame1, text="Title", width=6) lbl1.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1) entry1.pack(fill=X, padx=5, expand=True)
def init_ui(root): root.geometry("500x500+500+500") f = Frame(root) f.pack(fill=BOTH, expand=True) frame1 = Frame(f) frame1.pack(fill=X) lbl1 = Label(frame1, text="Enter url here", width=6) lbl1.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1) entry1.pack(fill=X, padx=5, expand=True) frame3 = Frame(f) frame3.pack(fill=X) lbl3 = Label(frame3, text="Keywords", width=6) lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5) txt = Text(frame3) txt.pack(fill=BOTH, pady=5, padx=5, expand=True) def on_click(): url = entry1.get() print url keywords = get_keywords(url) res = ", ".join(keywords) print res txt.delete("1.0", END) txt.insert("1.0", res) def on_click2(): entry1.delete(0, END) frame2 = Frame(f) frame2.pack(fill=X) tk.Button(frame2, text="Get keywords", command=on_click).pack() tk.Button(frame2, text="Clear", command=on_click2).pack()
def initUI(self): self.parent.title("Test the Gauss point") self.pack(fill=BOTH, expand=True) self.fields = \ 'bulk_modulus', \ 'Scale_Hardening', \ 'max_strain_in', \ 'increment_strain', \ 'Nloop' default_values = \ '16750', \ '1', \ '1E-2', \ '1E-4', \ '0' # ================== # Entries for User input: self.entries = [] for idx, field in enumerate(self.fields): row = Frame(self) row.pack(fill=X) labl = Label(row, text=field, width=30) labl.pack(side=LEFT, padx=5, pady=5) entry = Entry(row) entry.insert(END, default_values[idx]) entry.pack(fill=X, padx=5, expand=True) self.entries.append((field, entry)) # print field # ================== # Button for calculation frameButtonCalc = Frame(self) frameButtonCalc.pack(fill=X) calcButton = Button(frameButtonCalc, text="calculate", command=self.calculate) calcButton.pack(side=LEFT, padx=5, pady=5) # ================== # Raw Frame for plot self.canvasFrame = Frame(self) self.canvasFrame.pack(fill=BOTH, expand=True)
def __init__(self, master, instrument): InstrumentFrame.__init__(self, master, instrument) scale_name = [s.__name__ for s in scales.SCALES] scale_name = [type(instrument.scale).__name__] + scale_name variable = StringVar(self) w = OptionMenu(self, variable, *scale_name, command=self.set_scale) w.grid(row=1, sticky="W", padx=3) freq_frame = Frame(self) freq_frame.grid(row=2, sticky="W", padx=3) Label(freq_frame, text="Base Frequency (Hz): ").pack(side="left") self.freq_var = StringVar(self) self.freq_var.set(str(instrument.scale.base_frequency)) freq_entry = Entry(freq_frame, textvariable=self.freq_var, width=5) freq_entry.pack(side="left") freq_update = Button(freq_frame, text="Update", command=self.set_frequncy) freq_update.pack(side="left")
def gameOver(): count = 0 global endTimer for button in buttons: if str(button['state']) == 'normal': count += 1 if count == 10: popup = Toplevel() popup.title('Congratulations!') msg = Message(popup, text='You won! Enter your name:') msg.pack() entry = Entry(popup) entry.pack() button = Button(popup, text='Submit', command=lambda e=entry: saveScore(e)) button.pack() popup.geometry('%dx%d+%d+%d' % (150, 100, 600, 300)) endTimer = True return True return False
class MyEntry: #Класс для уменьшений объёма кода однотипных элементов для ввода параметров. def __init__(self, place_class, string_class, DefaultValue, choise_class = False, button_add = False): #При создании принимается место прикрепления виджета и строковое значение для надписи. # A string value to add a combobox or a button could be also inputed. def button_finfo(): messagebox.showinfo(locale(u"ui_iftxt", Settingz["str_langu"]), button_add) # Here it is a function to show information window. self.frame_class = Frame(place_class) self.frame_class.pack(side = TOP, fill = BOTH) #Внутри – рамка для виджетов, растягивается по ширине окна. self.label_class = Label(self.frame_class, text = string_class) self.label_class.pack(side = LEFT) #В ней – надписи для описания вводимых значений выровнены по левому краю. self.entry_class = Entry(self.frame_class, width = 15) self.entry_class.pack(side = RIGHT) self.entry_class.insert(0, DefaultValue) #И элементы для ввода значений шириной в 15 знаков выровнены по правому краю. if choise_class: self.box_class = Combobox(self.frame_class, values = choise_class, width = 2) self.box_class.set(choise_class[0]) self.box_class.pack(side = RIGHT) elif button_add: self.button_class = Button(self.frame_class, text = u"?", command = button_finfo, width = -1) self.button_class.pack(side = RIGHT) # The combobox widget or the button will be created if it is set. def get(self): return(self.entry_class.get()) #Метод .get() передаётся от элемента для ввода объекту описываемого класса. def getbox(self): if self.box_class.get() in ["+", "~"]: return(True) else: return(False)
def __init__(self, master): tk.Frame.__init__(self, master) canvas = tk.Canvas(self, height=self.master.winfo_screenheight(), width=self.master.winfo_screenwidth()) canvas.pack() frame = tk.Frame(canvas, bg="#282C34") frame.place(x=0, y=0, relwidth=1.0, relheight=1.0) instruction_label = tk.Label(frame, text="What would you like to do?", font=50) instruction_label.pack() tree_list = [] # Create the treeview to display the data sets for data_set in settings.data_set: tree = ttk.Treeview(frame) # Set Vertical Scrollbar to the Trees tree_scrollbar_vertical = ttk.Scrollbar(tree, orient='vertical', command=tree.yview) tree_scrollbar_horizontal = ttk.Scrollbar(tree, orient='horizontal', command=tree.xview) tree_scrollbar_vertical.pack(side=RIGHT, fill=Y) tree_scrollbar_horizontal.pack(side=BOTTOM, fill=X) tree.configure(xscrollcommand=tree_scrollbar_horizontal.set, yscrollcommand=tree_scrollbar_vertical.set) for i in range(0, len(data_set)): heading_list = [] value_list = [] for x in data_set[i]: heading_list.append(x) value_list.append(data_set[i].get(x)) value_list[-1] = value_list[-1].decode('utf-8', 'ignore') tree["columns"] = heading_list tree['show'] = 'headings' for x in range(0, len(heading_list)): tree.heading(heading_list[x], text=heading_list[x]) tree.insert("", 0, values=value_list) tree.pack(fill=BOTH, expand=True) # Fill the trees with data tree_list.append(tree) def treeview_sort_column(tv, col, reverse): l = [(tv.set(k, col), k) for k in tv.get_children('')] l.sort(reverse=reverse) # rearrange items in sorted positions for index, (val, k) in enumerate(l): tv.move(k, '', index) # reverse sort next time tv.heading( col, command=lambda: treeview_sort_column(tv, col, not reverse)) for col in heading_list: tree.heading(col, text=col, command=lambda _col=col: treeview_sort_column( tree, _col, False)) """ Bottom Frame - Seperator for Input Widgets """ bottom_frame = Frame(frame, bg="#282C34") bottom_frame.pack(fill=BOTH, expand=True) ## Sub-Frame [1] for Input ## frame_Input_1 = Frame(bottom_frame, bg="#282C34") frame_Input_1.pack(expand=True) input_label_UEN = Label(frame_Input_1, text="UEN:", bg='gray65') input_label_UEN.pack(side=LEFT) input_Entry_1 = Entry(frame_Input_1) input_Entry_1.pack(side=LEFT) btn_get_company_by_uen = tk.Button( frame_Input_1, text="Search Company By UEN", command=lambda: self.get_company_by_uen( tree_list=tree_list, uen_number=input_Entry_1.get())) btn_get_company_by_uen.pack(side=LEFT, padx="10") input_label_keyword = Label(frame_Input_1, text="Keyword:", bg='gray65') input_label_keyword.pack(side=LEFT, padx="1") input_Entry_2 = Entry(frame_Input_1) input_Entry_2.pack(side=LEFT) btn_list_company_from_keyword = tk.Button( frame_Input_1, text="Search Company by Name", command=lambda: self.list_company_from_keyword( tree_list=tree_list, keyword=input_Entry_2.get())) btn_list_company_from_keyword.pack(side=LEFT, padx="10") input_label_filter_top = Label(frame_Input_1, text="No. of Contractors:", bg='gray65') input_label_filter_top.pack(side=LEFT, padx="1") input_Entry_4 = Entry(frame_Input_1) input_Entry_4.pack(side=LEFT, padx="1") btn_get_top_contractors = tk.Button( frame_Input_1, text="Get Top Contractors", command=lambda: self.get_top_contractors( frame, n=int(input_Entry_4.get()))) btn_get_top_contractors.pack(side=LEFT, padx="10") ## Sub-Frame [2] for Input ## frame_Input_2 = Frame(bottom_frame, bg="#282C34") frame_Input_2.pack(expand=True) input_label_filter_qual = Label(frame_Input_2, text="Tender Amt:", bg='gray65') input_label_filter_qual.pack(side=LEFT, padx="1") input_Entry_5 = Entry(frame_Input_2) input_Entry_5.pack(side=LEFT, padx="1") btn_get_qualified_contractors = tk.Button( frame_Input_2, text="Get Qualified Contractors", command=lambda: self.get_qualified_contractors( input_Entry_5.get(), tree_list=tree_list)) btn_get_qualified_contractors.pack(side=LEFT, padx="10") input_label_award_year = Label(frame_Input_2, text="Award Year:", bg='gray65') input_label_award_year.pack(side=LEFT, padx="1") input_Entry_6 = Entry(frame_Input_2) input_Entry_6.pack(side=LEFT, padx="1") btn_get_award_year = tk.Button( frame_Input_2, text="List Procurements during Award Year", command=lambda: self.get_award_year( tree_list=tree_list, _year=int(input_Entry_6.get()))) btn_get_award_year.pack(side=LEFT, padx="10") ## Sub-Frame [1] for Buttons ## frame_button_1 = Frame(bottom_frame, bg="#282C34") frame_button_1.pack(side=TOP, expand=True) btn_get_procurement_by_category = tk.Button( frame_button_1, text="List Procurements by Category", command=lambda: self.get_procurement_by_cat(frame)) btn_get_procurement_by_category.pack(side=LEFT, padx="10") btn_get_agency = tk.Button(frame_button_1, text="List of Agencies", command=lambda: self.get_agency(frame)) btn_get_agency.pack(side=LEFT, padx="10") btn_get_awarded_contractors = tk.Button( frame_button_1, text="List of Awarded Contractors", command=lambda: self.get_awarded_contractors(tree_list=tree_list)) btn_get_awarded_contractors.pack(side=LEFT, padx="10") btn_get_expired_contracts = tk.Button( frame_button_1, text="Get Expired Contracts", command=lambda tree_variable=tree: self.get_expiry_date( tree=tree_variable)) btn_get_expired_contracts.pack(side=LEFT, padx="10") btn_sort_procure = tk.Button( frame_button_1, text="Sort by Procurement Amt", command=lambda: self.sort_col("awarded_amt", settings.data_set[0], False, tree_list=tree_list)) btn_sort_procure.pack(side=LEFT, padx="10") ## Sub-Frame [2] for Buttons ## frame_button_2 = Frame(bottom_frame, bg="#282C34") frame_button_2.pack(expand=True) function4_button = tk.Button( frame_button_2, text="Export Agency Procurement to Text File", command=lambda: self.export_file()) function4_button.pack(side=LEFT, expand=True, padx="10") back_button = tk.Button( frame_button_2, text="Return to start page", command=lambda: master.switch_frame(main.StartPage)) back_button.pack(side=LEFT, expand=True, padx="1")
self.event_generate('<Expose>') def last_page(self): """Return the last page in the notebook.""" return self.pages[self.tab(self.index('end') - 1)['text']] if __name__ == '__main__': from Tkinter import Tk from Tkconstants import TOP, BOTH from ttk import Label, Entry, Button, Style # test dialog root=Tk() style = Style() style.configure('C.TLabel', padding=20) tabPage=TabbedPageSet(root, page_names=['Foobar','Baz']) tabPage.pack(side=TOP, expand=True, fill=BOTH) Label(tabPage.pages['Foobar'].frame, text='Foo', style='C.TLabel').pack() Label(tabPage.pages['Foobar'].frame, text='Bar', style='C.TLabel').pack() Label(tabPage.pages['Baz'].frame, text='Baz').pack() entryPgName=Entry(root) buttonAdd=Button(root, text='Add Page', command=lambda:tabPage.add_page(entryPgName.get())) buttonRemove=Button(root, text='Remove Page', command=lambda:tabPage.remove_page(entryPgName.get())) labelPgName=Label(root, text='name of page to add/remove:') buttonAdd.pack(padx=5, pady=5) buttonRemove.pack(padx=5, pady=5) labelPgName.pack(padx=5) entryPgName.pack(padx=5) root.mainloop()
def display_reporting_procedure(*args): no_log_file = not _error_file_name path_name = os.path.join(user_directory, 'log', _error_file_name) size=500 fr = Toplevel(height=size, width=size) fr.title(string='Diagnil Problem Reporting Procedure') Message(fr, aspect=300, text=display_messages['reporting_procedure'] ).pack(padx=10, pady=10) def copy_entry_clipboard(ent): ent.selection_range(0, END) # for Unix/Linux ent.clipboard_clear() ent.clipboard_append(ent.get()) # needed for Windows if using_ttk or using_tile: addr_ent = Entry(fr, background=text_bg_color, width=60) else: addr_ent = Entry(fr, background=text_bg_color, width=60, relief=SUNKEN) addr_ent.insert(END, email_addr) addr_ent.pack(padx=20, pady=5) fr_email = Frame(fr) Button(fr_email, text='Copy', command=EventHandler('Reporting proc', lambda : copy_entry_clipboard(addr_ent)) ).pack(side=LEFT, padx=5) Label(fr_email, text='E-mail Address to Clipboard').pack(side=LEFT, padx=5) fr_email.pack(pady=5) Frame(fr).pack(pady=5) if using_ttk or using_tile: file_ent = Entry(fr, background=text_bg_color, width=60) else: file_ent = Entry(fr, background=text_bg_color, width=60, relief=SUNKEN) file_ent.insert(END, path_name) file_ent.pack(padx=20, pady=5) fr_file = Frame(fr) copy_file_button = \ Button(fr_file, text='Copy', command=EventHandler('Reporting proc', lambda : copy_entry_clipboard(file_ent))) copy_file_button.pack(side=LEFT, padx=5) Label(fr_file, text='File name to Clipboard').pack(side=LEFT, padx=5) fr_file.pack(pady=5) if no_log_file: file_ent['state'] = DISABLED copy_file_button['state'] = DISABLED Frame(fr).pack(pady=5) Message(fr, aspect=800, text=display_messages['privacy_notice']).pack(padx=10, pady=5) if using_ttk or using_tile: close_button = Button(fr, text=close_button_text, default=ACTIVE, command=EventHandler('Reporting proc', lambda : fr.destroy())) else: close_button = Button(fr, text=close_button_text, default=ACTIVE, width=6, command=EventHandler('Reporting proc', lambda : fr.destroy())) close_button.pack(side=RIGHT, padx=30, pady=10) wrapped_bind(fr, '<Return>', lambda *ev: fr.destroy()) rx,ry = root.winfo_rootx(), root.winfo_rooty() x = (root.winfo_width() - size) // 2 y = (root.winfo_height() - size) // 2 fr.geometry(newGeometry='+%d+%d'%(rx+x, ry+y))
class Ex(Frame): def __init__(self,parent): Frame.__init__(self,parent) self.parent = parent self.x_before = 400 self.x_current = 400 self.y_before = 400 self.y_current = 400 self.FirstRun = True self.AddVal = ADDVAL self.AddVal_X = ADDVAL_X self.initUI() self.runRandWalk(STEPS) self.FirstRun = False self.Steps = STEPS self.newSteps = STEPS self.XStep = XSTEP def initUI(self): self.parent.title("Random Walk Lines 1") self.pack(fill=BOTH,expand=1) self.style = Style() self.style.theme_use("default") frame = Frame(self,relief=RAISED,borderwidth=2) frame.pack(fill=BOTH,expand=True) self.canvas = Canvas(frame) self.canvas.create_line(10,400,790,400,dash=(4,2), width=2) self.canvas.create_line(400,10,400,790,dash=(4,2), width=2) self.canvas.pack(fill=BOTH,expand=1) self.newWalkButton = Button(self,text="New Walk", command=self.newWalk) self.closeButton = Button(self,text="Close", command=self.closeAll) self.stepsButton = Button(self,text="Send Steps", command=self.sendSteps) self.xSizeButton = Button(self,text="Set X Step", command=self.xSize) self.ySizeButton = Button(self,text="Set Y Step", command=self.ySize) self.xSizeBox = Entry(self,width=10) self.ySizeBox = Entry(self,width=10) self.stepsBox = Entry(self,width=10) # pack the buttons here self.closeButton.pack(side=RIGHT,padx=5,pady=5) self.newWalkButton.pack(side=RIGHT) self.stepsButton.pack(side=RIGHT) self.stepsBox.pack(side=RIGHT) self.xSizeButton.pack(side=RIGHT) self.xSizeBox.pack(side=RIGHT) self.ySizeButton.pack(side=RIGHT) self.ySizeBox.pack(side=RIGHT) def ySize(self): self.AddVal = int(self.ySizeBox.get()) def xSize(self): self.AddVal_X = int(self.xSizeBox.get()) def sendSteps(self): self.newSteps = int(self.stepsBox.get()) def newWalk(self): for x in range(0,self.Steps): getTag = "step"+str(x) self.canvas.coords(getTag,(0,0,0,0)) self.Steps = self.newSteps self.x_current = 400 self.x_before = 400 self.y_current = 400 self.y_before = 400 self.runRandWalk(self.Steps) def closeAll(self): Frame.quit(self) def RandWalk(self,whichStep): r = random.randint(0,1) rx = random.randint(0,1) addval = 0; addval_x = 0; toTag = "step"+str(whichStep) if r == 0: addval = (self.AddVal) else: addval = -(self.AddVal) if rx==0: addval_x = (self.AddVal_X) else: addval_x = -(self.AddVal_X) self.y_current = self.y_before + addval self.x_current = self.x_before + addval_x if self.y_current < 200: if self.y_before == 200: if self.FirstRun == True: self.canvas.create_line(self.x_before,self.y_before, self.x_current,self.y_current, fill = "green", width = 5, tags=toTag) else: self.canvas.coords(toTag,(self.x_before,self.y_before, self.x_current,self.y_current),) self.canvas.itemconfig(toTag,fill="green") else: if self.FirstRun == True: self.canvas.create_line(self.x_before,self.y_before, self.x_current,self.y_current, fill = "green", width = 5, tags=toTag) else: self.canvas.coords(toTag,(self.x_before,self.y_before, self.x_current,self.y_current)) self.canvas.itemconfig(toTag,fill="green") else: if self.y_before<200: if self.FirstRun==True: self.canvas.create_line(self.x_before,self.y_before, self.x_current,self.y_current, fill = "green", width = 5, tags=toTag) else: self.canvas.coords(toTag,(self.x_before,self.y_before, self.x_current,self.y_current)) self.canvas.itemconfig(toTag,fill="green") else: if self.FirstRun==True: self.canvas.create_line(self.x_before,self.y_before, self.x_current,self.y_current, fill = "red", width = 5, tags=toTag) else: self.canvas.coords(toTag,(self.x_before,self.y_before, self.x_current,self.y_current)) self.canvas.itemconfig(toTag,fill="red") self.canvas.pack(fill=BOTH,expand=1) self.x_before = self.x_current self.y_before = self.y_current def runRandWalk(self,steps): for x in range(0,steps): self.RandWalk(x)
class Example(Frame): def __init__(self, parent): Frame.__init__(self) self.parent = parent self.processor = TextProcessor() self.initUI() def readCorpus(self, path): self.data = Corpus(path) self.processor.calculateConditionalFrequency(self.data, self.selCategory.get()) #self.processor.calculateTotalTermFrequency(self.data) self.categoryOption['menu'].delete(0, 'end') for attr in self.data.attributes: self.categoryOption['menu'].add_command(label=attr, command=lambda v=attr: self.changeCategory(v) ) self.curdoc=0 self.txt1.delete('1.0', END) self.txt1.insert('1.0', self.data.docs[self.curdoc].text) def refreshTextInfo(self): if self.selCategory.get() != 'Categories': idcat = self.data.attributes.index(self.selCategory.get()) self.entry1.delete(0, END) self.entry1.insert(0, self.data.getAttributeVal(self.curdoc, self.selCategory.get() )) self.txt1.delete('1.0', END) self.txt1.insert('1.0', self.data.docs[self.curdoc].text) self.applyProcessing() def changeCategory(self, value): self.selCategory.set(value) self.entry1.delete(0, END) self.entry1.insert(0, self.data.getAttributeVal(self.curdoc, self.selCategory.get())) self.processor.calculateConditionalFrequency(self.data, self.selCategory.get()) def prevDocument(self): if self.curdoc>0: self.curdoc-=1 self.refreshTextInfo() def nextDocument(self): if self.curdoc<self.data.ndocs-1: self.curdoc+=1 self.refreshTextInfo() def popup(self, event): print "hello "+str(event.widget) self.popupmenu.tk_popup(event.x_root, event.y_root, 0) print event.widget.index("@%s,%s" % (event.x, event.y)) def applyProcessing(self): if self.selCategory.get() != 'Categories': indxCat = self.data.attributes.index( self.selCategory.get() ) textResult = self.processor.process(self.data.docs[self.curdoc], indxCat) else: textResult = "" self.txt2.delete('1.0', END) self.txt2.insert('1.0', textResult) def loadCorpus(self): path = tkFileDialog.askdirectory() self.readCorpus(path) self.refreshTextInfo() def hello(self): print "Hello" def initUI(self): self.parent.title("Simple") self.pack(fill=BOTH, expand=True) self.centerWindow() sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() frame1 = Frame(self, relief=RAISED, borderwidth=1) frame1.pack(fill=X) button1 = Button(frame1, text=u"<", command=self.prevDocument) button1.pack(side=LEFT, padx=5, pady=5) button2 = Button(frame1, text=u">", command=self.nextDocument) button2.pack(side=LEFT, padx=5, pady=5) self.selCategory = StringVar(self) self.categoryOption = OptionMenu(frame1, self.selCategory, *["Categories"], command=self.changeCategory) self.categoryOption.pack(side=LEFT, padx=5, pady=5) self.entry1 = Entry(frame1) self.entry1.pack(side=LEFT, padx=5, pady=5) self.ignoreActualDocVar = IntVar(self) checkButton1 = Checkbutton(frame1, text="Ignored", variable=self.ignoreActualDocVar) checkButton1.pack(side=LEFT, padx=5, pady=5) button3 = Button(frame1, text=u"Save document", command=self.prevDocument) button3.pack(side=LEFT, padx=5, pady=5) #entry1 = Entry(frame1) #entry1.pack(fill=X, padx=5, expand=True) frame2 = PanedWindow(self, orient=HORIZONTAL) frame2.pack(fill=BOTH, expand=1) self.txt1 = Text(frame2, width=sw/22) frame2.add(self.txt1) self.txt2 = Text(frame2) self.txt2.bind("<Button-3>", self.popup) frame2.add(self.txt2) frame3 = Frame(self, relief=RAISED, borderwidth=1) frame3.pack(fill=X) #lbl3 = Label(frame3, text="Author", width=6) #lbl3.pack(side=LEFT, padx=5, pady=5) #entry3 = Entry(frame3) #entry3.pack(fill=X, padx=5, expand=True) self.swVar = IntVar(self) checkButton1 = Checkbutton(frame3, text="Remove stop words", variable=self.swVar) checkButton1.pack(side=LEFT, padx=5, pady=5) self.lowerVar = IntVar(self) checkButton1 = Checkbutton(frame3, text="Convert to lower case", variable=self.lowerVar) checkButton1.pack(side=LEFT, padx=5, pady=5) button3 = Button(frame3, text=u"Apply", command=self.applyProcessing) button3.pack(side=LEFT, padx=5, pady=5) #self.readCorpus() # create a toplevel menu menubar = Menu(self) filemenu = Menu(menubar, tearoff=0) filemenu.add_command(label="Quit", command=self.parent.quit) filemenu.add_command(label="Open corpus", command=self.loadCorpus) menubar.add_cascade(label="Project", menu=filemenu) #menubar.add_command(label="Quit!") # , command=root.quit # display the menu self.parent.config(menu=menubar) self.popupmenu = Menu(self.parent, tearoff=0) self.popupmenu.add_command(label="Undo", command=self.hello) self.popupmenu.add_command(label="Redo", command=self.hello) def centerWindow(self): sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() w = sw/1.5 h = sh/1.5 x = (sw - w) / 2 y = (sh - h) / 2 self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
def initUI(self): self.parent.title("Emammal Legacy Data Converter") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=True) self.root_directory = StringVar(self.parent) self.output_directory = StringVar(self.parent) self.results = StringVar() self.radio_type = IntVar() self.radio_type = 0 frame1 = Frame(self) frame1.pack(fill=X) lbl1 = Label(frame1, text="Input Directory", width=15) lbl1.pack(side=LEFT, padx=5, pady=5) select_dir = Button(frame1, text='Choose Directory', command=self.input_askdirectory) select_dir.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1, textvariable=self.root_directory) entry1.pack(fill=X, padx=5, expand=True) frame2 = Frame(self) frame2.pack(fill=X) lbl2 = Label(frame2, text="Output Directory", width=15) lbl2.pack(side=LEFT, padx=5, pady=5) output_dir = Button(frame2, text='Choose Directory', command=self.output_askdirectory) output_dir.pack(side=LEFT, padx=5, pady=5) entry2 = Entry(frame2, textvariable=self.output_directory) entry2.pack(fill=X, padx=5, expand=True) frameRadio = Frame(self) frameRadio.pack(fill=X) lbl2 = Label(frameRadio, text="Manifest Type", width=15) lbl2.pack(side=LEFT, padx=5, pady=5) radio_emammal = Radiobutton(frameRadio, text="eMammal xmlVerifier-1.0.2", variable=self.radio_type, value=1, command=self.update_type_value) radio_emammal.pack(side=LEFT, padx=5, pady=5) radio_classic = Radiobutton(frameRadio, text="WSC eMammal Classic", variable=self.radio_type, value=0, command=self.update_type_value) radio_classic.pack(side=LEFT, padx=5, pady=5) radio_classic.select() frame3 = Frame(self) frame3.pack(fill=BOTH, expand=True) lbl3 = Label(frame3, text="Results", width=15) lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5) self.results = Text(frame3) self.results.pack(fill=BOTH, pady=5, padx=5, expand=True) closeButton = Button(self, text="Close", command=self.quit) closeButton.pack(side=RIGHT, padx=5, pady=5) okButton = Button(self, text="Run", command=self.run_process) okButton.pack(side=RIGHT)
def show_sell_bills(master): """Заполняет верхний фрейм продаж блокнотом со счетами и сответствующими элементами управления.""" sellTopFrame = Frame(master, relief=GROOVE) sellTopFrame.pack(side=TOP, fill=X, padx=10, pady=5) #------------------------------------------------------------ def b_add(): """Срабатывает при нажатии кнопки "Добавить счет", добавляет таб в блокноте со счетами""" bill = Bill(note) bills.append(bill) tab = bill.frame note.add(tab, text = show_sell_bills.entry.get()) button_del_bill.configure(state=NORMAL) button_add_bill = Button(sellTopFrame,text=u'Добавить\nсчет', style='Little.TButton', command=b_add) button_add_bill.pack(side=LEFT, padx=10, pady=10, fill=X) #------------------------------------------------------------ """Хоть и без отдельной функции, но комментарий расширенный стоит дать. Это окошко ввода названия для создаваемого счета""" show_sell_bills.entry = StringVar() show_sell_bills.entry.set(u'Стол ') entry = Entry(sellTopFrame, textvariable=show_sell_bills.entry, font=('verdana', FONT_SIZE)) entry.pack(side=LEFT, padx=10, pady=10) #------------------------------------------------------------ def b_left(): """Срабатывает при нажатии кнопки "влево", сдвигается влево на один таб в блокноте со счетами""" w_name = note.select() window_names = note.tabs() if window_names: index = window_names.index(w_name) - 1 note.select(window_names[index]) button_left = Button(sellTopFrame, image=data.IMG_INTERFACE[3], command=b_left) button_left.pack(side=LEFT, padx=5, pady=5) #------------------------------------------------------------ def b_right(): """Срабатывает при нажатии кнопки "вправо", сдвигается вправо на один таб в блокноте со счетами""" w_name = note.select() window_names = note.tabs() if window_names: index = window_names.index(w_name) + 1 if index == len(window_names): index = 0 note.select(window_names[index]) button_right = Button(sellTopFrame, image=data.IMG_INTERFACE[4], command=b_right) button_right.pack(side=LEFT, padx=5, pady=5) #------------------------------------------------------------ def b_del(): """Срабатывает при нажатии кнопки "удалить счет", удаляет таб в блокноте со счетами""" w_name = note.select() window_names = note.tabs() if not window_names: button_del_bill.configure(state=DISABLED) else: index = window_names.index(w_name) if not bills[index].bill: note.forget(note.select()) del(bills[index]) if not note.tabs(): button_del_bill.configure(state=DISABLED) else: if tkMessageBox.askokcancel('Внимание!', 'Вы уверены, что хотите удалить этот счет?'): note.forget(note.select()) del(bills[index]) if not note.tabs(): button_del_bill.configure(state=DISABLED) button_del_bill = Button(sellTopFrame,text=u'Удалить\nсчет', style='Little.TButton', command=b_del) button_del_bill.pack(side=LEFT, padx=10, pady=10, fill=X) #----- ОСТАВШИЕСЯ ЭЛЕМЕНТЫ - БЛОКНОТ, СЧЕТЧИК ПРОДАЖ, КАЛЬКУЛЯТОР ------ label = Label(sellTopFrame, text='', bg='white', font=('Lucida Console', FONT_SIZE)) label.pack(side=RIGHT, padx=10, pady=5) def label_renew(): """Обновляет счетчик продаж в верхнем правом углу экрана""" sold = '%6.2f' % round(queries.sell_in_day(),2) + ' грн.' label.configure(text='СЕГОДНЯ ПРОДАНО\n на ' + sold) label_renew() show_sell_bills.label_renew = label_renew #----------- button_calc = Button(sellTopFrame, image=data.IMG_INTERFACE[8], command=calculator_press) button_calc.pack(side=RIGHT, padx=5, pady=5) button_paid = Button(sellTopFrame, image=data.IMG_INTERFACE[10], width=8, compound=LEFT, text=u'Блокнот\nрасходов', command=lambda: calc_pad(data)) button_paid.pack(side=RIGHT, padx=5, pady=5) #----------- note = Notebook(master, style='Custom.TNotebook') bills = [] note.pack(side=TOP, padx=BILL_PAD_X, pady=BILL_PAD_Y) #----------- Один пустой столик ставим по умолчанию ---------- bill = Bill(note) bills.append(bill) tab = bill.frame note.add(tab, text = u' Стол 1 ') #------------------------------------------------------------- #--------Автоподъем высоты ------------ sellTopFrame.update() y1 = sellTopFrame.winfo_height() y2 = note.winfo_height() master.configure(height = y1 + y2 + 40) master.pack_propagate(False) #--------------------------------------- calculator_press.window_calc = False return bills, note
class topFrame(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.setUI() def setUI(self): self.parent.title("ServoGui") self.pack(fill=BOTH, expand=1) self.comPort = StringVar(self) self.laststrm = StringVar(self) settingFrame = Frame(self, borderwidth=1, relief=RAISED) settingFrame.pack(fill=Y, side=LEFT) Label(settingFrame, width=50, text="Port Settings", bg="green", fg="black").pack(fill=X) ports = self.getComPorts() w = apply(OptionMenu, (settingFrame, self.comPort) + tuple(ports)) w.pack(fill=X) BaudFrame = Frame(settingFrame) BaudFrame.pack(fill=X) Label(BaudFrame, text="Baud:").pack(side=LEFT) self.baud_entry = Entry(BaudFrame, width=15, validate="focusout", validatecommand=self.baudValidate) self.baud_entry.pack(side=LEFT, expand = True) self.baud_entry.insert(0,"115200") Button(settingFrame, text="Open Port", command=self.openPort). pack(fill=X) Button(settingFrame, text="Close Port", command=self.closePort). pack(fill=X) StreamFrame = Frame(settingFrame) StreamFrame.pack() self.btnStartStream = Button(StreamFrame, text="Start Stream", command=self.startStream, state=DISABLED) self.btnStopStream = Button(StreamFrame, text="Stop Stream", command=self.stopStream, state=DISABLED) self.btnGetConfig = Button(StreamFrame, text="Get Config", command=self.getConfig, state=DISABLED) self.btnStartStream.pack(side=LEFT) self.btnStopStream.pack(side=LEFT) self.btnGetConfig.pack(side=LEFT) self.queue = Queue.Queue() self.writequeue = Queue.Queue() Label(settingFrame, width=50, text="Drive Settings", bg="green", fg="black").pack(fill=X) DriveSettingsFrame = Frame(settingFrame, relief=SUNKEN) DriveSettingsFrame.pack(fill=X) driveSettingsFrames = [] self.driveSettingsEntries = [] for drivesetting in drivesettings: driveSettingsFrames.append(Frame(DriveSettingsFrame)) driveSettingsFrames[-1].pack(fill=X) Label(driveSettingsFrames[-1], text=drivesetting).pack(side=LEFT) self.driveSettingsEntries.append(Entry(driveSettingsFrames[-1])) self.driveSettingsEntries[-1].pack(side=RIGHT) Button(DriveSettingsFrame, text="Send to drive", command=self.sendConfig).pack(fill=X) Button(DriveSettingsFrame, text="Save config in drive", command=self.saveConfig).pack(fill=X) Label(settingFrame, width=50, textvariable=self.laststrm, bg="green", fg="black").pack(fill=X) #MatplotLib stuff f = Figure(figsize=(5, 4), dpi=100) self.a = f.add_subplot(311) self.a.set_title("Requested and actual position") self.b = f.add_subplot(312) self.b.set_title("Error") self.c = f.add_subplot(313) self.c.set_title("Current meas ADC value") self.canvas = FigureCanvasTkAgg(f, master=self) self.canvas.show() self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1) toolbar = NavigationToolbar2TkAgg(self.canvas, self) toolbar.update() self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1) self.hall=[] self.encoder_count=[] self.pos_error=[] self.requested_position=[] self.requested_delta=[] self.adc_value=[] self.pid_output=[] self.a.set_autoscaley_on(True) self.encoder_line, = self.a.plot([],[]) self.error_line, = self.b.plot([],[]) self.reqpos_line, = self.a.plot([],[]) self.ADC_line, = self.c.plot([],[]) self.updateCanvas() def baudValidate(self): sVal = self.baud_entry.get() try: iVal = int(sVal) except ValueError: print "Illegal baud value" self.baud_entry.delete(0, END) self.baud_entry.insert(0, "115200") return False return True def openPort(self): try: self.ser = serial.Serial(self.comPort.get(), int(self.baud_entry.get()), timeout=0) except serial.SerialException: print "unable to open" return self.btnStartStream['state'] = NORMAL self.btnStopStream['state'] = NORMAL self.btnGetConfig['state'] = NORMAL self.thread = SerialThread(self.queue, self.writequeue, self.ser) self.thread.daemon = True self.thread.start() self.process_serial() def closePort(self): self.thread.stop() self.thread.join() self.ser.closePort() self.btnStartStream['state'] = DISABLED self.btnStopStream['state'] = DISABLED self.btnGetConfig['state'] = DISABLED def process_serial(self): while self.queue.qsize(): try: line = self.queue.get() self.handleLine(line) except Queue.Empty: pass self.after(100, self.process_serial) def startStream(self): self.writequeue.put(b"STREAM START \r") def stopStream(self): self.writequeue.put(b"STREAM DIE \r") def getConfig(self): self.writequeue.put(b"GET\r") def saveConfig(self): self.writequeue.put(b"SAVE \r") def sendConfig(self): for setting in drivesettings: dataToSend = b"SET "+setting+" "+self.driveSettingsEntries[drivesettings.index(setting)].get()+"\r" print dataToSend self.writequeue.put(dataToSend) time.sleep(0.2) def getComPorts(self): ports = serial.tools.list_ports.comports() portNames = [] for port in ports: portNames.append(port[0]) return portNames def handleLine(self,line): line = line.replace(" ", "") line = line.replace("/n", "") line = line.replace("/r", "") parts = line.split(":") if len(parts)>1: if parts[0] == "STR": self.handleStr(parts[1]) return if parts[0] in drivesettings: self.driveSettingsEntries[drivesettings.index(parts[0])].delete(0, END) self.driveSettingsEntries[drivesettings.index(parts[0])].insert(0, parts[1]) def handleStr(self,strm): #format of the stream line: STR:hall;count;requestedPosition;requestedDelta;error parts = strm.split(";") self.laststrm.set(strm) self.hall.append(int(parts[0])) if len(self.hall) > 5000: self.hall.pop(0) self.encoder_count.append(parts[1]) if len(self.encoder_count) > 5000: self.encoder_count.pop(0) self.requested_position.append(parts[2]) if len(self.requested_position) > 5000: self.requested_position.pop(0) self.requested_delta.append(parts[3]) if len(self.requested_delta) > 5000: self.requested_delta.pop(0) self.pos_error.append(parts[4]) if len(self.pos_error) > 5000: self.pos_error.pop(0) self.adc_value.append(parts[5]) if len(self.adc_value) > 5000: self.adc_value.pop(0) self.pid_output.append(parts[5]) if len(self.pid_output) > 5000: self.pid_output.pop(0) def updateCanvas(self): self.encoder_line.set_xdata(range(len(self.encoder_count))) self.encoder_line.set_ydata(self.encoder_count) self.error_line.set_xdata(range(len(self.pos_error))) self.error_line.set_ydata(self.pos_error) self.reqpos_line.set_xdata(range(len(self.requested_position))) self.reqpos_line.set_ydata(self.requested_position) self.ADC_line.set_xdata(range(len(self.adc_value))) self.ADC_line.set_ydata(self.adc_value) self.a.relim() self.a.autoscale_view() self.b.relim() self.b.autoscale_view() self.c.relim() self.c.autoscale_view() self.canvas.draw() self.after(100, self.updateCanvas)
class ChooseType(Frame): def __init__(self, parent, controller): Frame.__init__(self, parent) self.controller = controller ChooseType.socket = None ChooseType.create_player = None self.plx_name = "PLAYER" ChooseType.plx_type = "SPECTATOR" ChooseType.start_game = None label_1 = Label(self, text="Create character", font=TITLE_FONT, justify=CENTER, anchor=CENTER) label_2 = Label(self, text="Name: ") self.entry_1 = Entry(self) self.entry_1.insert(0, 'Player_') label_3 = Label(self, text="Join as: ") button1 = Button(self, text="FROG", command=self.callback_frog) button2 = Button(self, text="FLY", command=self.callback_fly) button3 = Button(self, text="SPECTATOR", command=self.callback_spec) ChooseType.button4 = Button(self, text="Back", command=lambda: controller.show_frame("StartPage")) label_1.pack(side="top", fill="x", pady=10) label_2.pack() self.entry_1.pack() label_3.pack() button1.pack() button2.pack() button3.pack() ChooseType.button4.pack(pady=20) def check_name(self,s): temp = False try: s.decode('ascii') except UnicodeEncodeError: print "it was not a ascii-encoded unicode string" tkMessageBox.showwarning("Error message", "Invalid player name") except UnicodeDecodeError: print "it was not a ascii-encoded unicode string" tkMessageBox.showwarning("Error message", "Invalid player name") else: if len(s) < 10 and len(s) >= 1: temp = True else: tkMessageBox.showwarning("Error message", "String lenght must be 1-10 characters") return temp # this frame works on callbacks so each button is processed separately # 1. get name # 2. check if the name is valid # 3. set player type # 4. **create server localy if the user comes from create server frame # 5. add player to the game (parameters: name, type) def callback_frog(self): self.plx_name = self.entry_1.get() if self.check_name(self.plx_name): ChooseType.plx_type = "FROG" self.create_server(CreateServer.plx_name,CreateServer.game_dim) self.callback_add_player() def callback_fly(self): self.plx_name = self.entry_1.get() if self.check_name(self.plx_name): ChooseType.plx_type = "FLY" self.create_server(CreateServer.plx_name,CreateServer.game_dim) self.callback_add_player() def callback_spec(self): self.plx_name = self.entry_1.get() if self.check_name(self.plx_name): ChooseType.plx_type = "SPECTATOR" self.create_server(CreateServer.plx_name,CreateServer.game_dim) self.callback_add_player() # join the game def callback_add_player(self): set_shut_down_level(1) data = "JOIN;"+ChooseType.plx_type if global_state==1: # directly (locally) access the game engine ChooseType.create_player = CreateServer.local_world.add_player(self.plx_name) CLIENTS.append((ChooseType.create_player, 'Local Player')) CreateServer.local_world.set_player_attr(ChooseType.create_player, 1, 'character', data) ChooseType.start_game = True else: GameWindow.vSer.set(globvar[0]) host,_ = globvar[1] try: ChooseType.socket = s = socket.socket(AF_INET,SOCK_STREAM) s.connect((host,QUAD_AXE)) # ping-pong communication: # 1. client: ADD_ME;Player1 -> server: ADDED -> client # 2. client: JOIN;FROG -> server data2 = 'ADD_ME;'+self.plx_name self.socket.send(data2.encode()) buf = ChooseType.socket.recv(100) message = buf.decode('utf-8') if message == "ADDED": print 'Added player!' ChooseType.start_game = True ChooseType.socket.send(data.encode()) except Exception as e: print e ChooseType.start_game = False print 'Cannot connect to server!' self.controller.show_frame("GameWindow") # this is the function that initiates: engine, server and broadcast def create_server(self,s_name,field_xy): if global_state == 0 or shut_down_level != 0: return ChooseType.button4.config(state="disabled") # addition game field size check GameWindow.vSer.set(s_name) m_split=field_xy.split('X') try: x_size = int(m_split[0]) except: x_size = 10 try: y_size = int(m_split[1]) except: y_size = 10 if (x_size < 2 or x_size > MAX_GF_SIZE): print 'The gamefield\'s dimensions size should be between 3 and '+str(MAX_GF_SIZE)+' !' x_size = 10 if (y_size < 2 or y_size > MAX_GF_SIZE): print 'The gamefield\'s dimensions size should be between 3 and '+str(MAX_GF_SIZE)+' !' y_size = 10 # Start the world CreateServer.local_world = engine.World(x_size,y_size) et = engine.engine_thread(ENGINE_SLEEP, CreateServer.local_world) et.start() THREADS.append(et) # Initialize the server server_sock = server.init_server() set_globvar(server_sock.getsockname()) st = server.server_thread(s_name, server_sock, CreateServer.local_world) st.start() # Start the server thread THREADS.append(st) # Initialize the broadcaster bc_sock = server.init_broadcaster() # Start broadcasting thread bt = server.announce_bc_thread(bc_sock, BROADCASTING_PORT, s_name, CreateServer.local_world) bt.start() THREADS.append(bt)
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Review") self.pack(fill=BOTH, expand=True) labelfont20 = ('Roboto', 20, 'bold') labelfont12 = ('Roboto', 12, 'bold') frame0 = Frame(self) frame0.pack() lbl0 = Label(frame0, text="Hi USER") lbl0.config(font=labelfont20) lbl0.pack(padx=5, pady=5) lbl00 = Label(frame0, text="Fill the data here") lbl00.config(font=labelfont12) lbl00.pack(padx=5, pady=5) frame1 = Frame(self) frame1.pack() lbl1 = Label(frame1, text="Name", width=15) lbl1.pack(side=LEFT, padx=7, pady=5) self.entry1 = Entry(frame1, width=20) self.entry1.pack(padx=5, expand=True) frame2 = Frame(self) frame2.pack() lbl2 = Label(frame2, text="Branch", width=15) lbl2.pack(side=LEFT, padx=7, pady=5) self.entry2 = Entry(frame2) self.entry2.pack(fill=X, padx=5, expand=True) frame3 = Frame(self) frame3.pack() lbl3 = Label(frame3, text="Percent", width=15) lbl3.pack(side=LEFT, padx=7, pady=5) self.entry3 = Entry(frame3) self.entry3.pack(fill=X, padx=5, expand=True) frame4 = Frame(self) frame4.pack() lbl4 = Label(frame4, text="Placed(Yes/No)", width=15) lbl4.pack(side=LEFT, padx=7, pady=5) self.entry4 = Entry(frame4) self.entry4.pack(fill=X, padx=5, expand=True) frame5 = Frame(self) frame5.pack() lbl5 = Label(frame5, text="Resume_File", width=15) lbl5.pack(side=LEFT, padx=7, pady=5) self.entry5 = Entry(frame5) self.entry5.pack(fill=X, padx=5, expand=True) frame6 = Frame(self) frame6.pack() closeButton = Button(frame6, text="SUBMIT", width=15, command=self.getDate) closeButton.pack(padx=5, pady=5) frame000 = Frame(self) frame000.pack() self.lbl000 = Label(frame000, text="Enter the data and click SUBMIT") self.lbl000.config(font=labelfont12) self.lbl000.pack(padx=5, pady=5) def getDate(self): x1 = self.entry1.get() x2 = self.entry2.get() x3 = self.entry3.get() x4 = self.entry4.get() x5 = self.entry5.get() list1 = [x1, x2, x3, x4, "=HYPERLINK(" + "\"" + x5 + "\"" + ")"] self.entry1.delete(0, 'end') self.entry2.delete(0, 'end') self.entry3.delete(0, 'end') self.entry4.delete(0, 'end') self.entry5.delete(0, 'end') self.lbl000.config(text="YO") with open("test.csv", "ab") as fp: wr = csv.writer(fp, dialect='excel') wr.writerow(list1) fp.close()
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Append Data") self.pack(fill=BOTH, expand=True) labelfont20 = ('Roboto', 15, 'bold') labelfont10 = ('Roboto', 10, 'bold') labelfont8 = ('Roboto', 8, 'bold') frame0 = Frame(self) frame0.pack() lbl0 = Label(frame0, text="Hi Nakul") lbl0.config(font=labelfont20) lbl0.pack( padx=5, pady=5) lbl00 = Label(frame0, text="Fill the data here") lbl00.config(font=labelfont10) lbl00.pack( padx=5, pady=5) #################################### frame1 = Frame(self) frame1.pack() frame1.place(x=50, y=100) lbl1 = Label(frame1, text="Name", width=15) lbl1.pack(side=LEFT,padx=7, pady=5) self.entry1 = Entry(frame1,width=20) self.entry1.pack(padx=5, expand=True) #################################### frame2 = Frame(self) frame2.pack() frame2.place(x=50, y=130) lbl2 = Label(frame2, text="F Name", width=15) lbl2.pack(side=LEFT, padx=7, pady=5) self.entry2 = Entry(frame2) self.entry2.pack(fill=X, padx=5, expand=True) ###################################### frame3 = Frame(self) frame3.pack() frame3.place(x=50, y=160) lbl3 = Label(frame3, text="DOB(D/M/Y)", width=15) lbl3.pack(side=LEFT, padx=7, pady=5) self.entry3 = Entry(frame3) self.entry3.pack(fill=X, padx=5, expand=True) ####################################### frame4 = Frame(self) frame4.pack() frame4.place(x=50, y=190) lbl4 = Label(frame4, text="Medium(H/E)", width=15) lbl4.pack(side=LEFT, padx=7, pady=5) self.entry4 = Entry(frame4) self.entry4.pack(fill=X, padx=5, expand=True) ########################################## frame5 = Frame(self) frame5.pack() frame5.place(x=50, y=225) MODES = [ ("M", "Male"), ("F", "Female"), ] lbl5 = Label(frame5, text="Gender", width=15) lbl5.pack(side=LEFT, padx=7, pady=5) global v v = StringVar() v.set("Male") # initialize for text, mode in MODES: b = Radiobutton(frame5, text=text,variable=v, value=mode) b.pack(side=LEFT,padx=10) ############################################ #####printing line lbl5a = Label(text="___________________________________________________") lbl5a.pack() lbl5a.place(x=45, y=255) ############################################ frame6 = Frame(self) frame6.pack() frame6.place(x=50, y=290) lbl6 = Label(frame6, text="Phone No:", width=15) lbl6.pack(side=LEFT, padx=7, pady=5) self.entry6 = Entry(frame6) self.entry6.pack(fill=X, padx=5, expand=True) ################################################ frame7 = Frame(self) frame7.pack() frame7.place(x=50, y=320) lbl7 = Label(frame7, text="Landline No:", width=15) lbl7.pack(side=LEFT, padx=7, pady=5) self.entry7 = Entry(frame7) self.entry7.pack(fill=X, padx=5, expand=True) ############################################### frame8 = Frame(self) frame8.pack() frame8.place(x=50, y=350) lbl8 = Label(frame8, text="Email:", width=15) lbl8.pack(side=LEFT, padx=7, pady=5) self.entry8 = Entry(frame8) self.entry8.pack(fill=X, padx=5, expand=True) ############################################# frame9 = Frame(self) frame9.pack() frame9.place(x=50, y=380) lbl9 = Label(frame9, text="HomeTown:", width=15) lbl9.pack(side=LEFT, padx=7, pady=5) self.entry9 = Entry(frame9) self.entry9.pack(fill=X, padx=5, expand=True) ############################################### frame10 = Frame(self) frame10.pack() frame10.place(x=60, y=415) lbl10 = Label(frame10, text="Address:") lbl10.pack( padx=5, pady=5) self.entry10 = Text(frame10,height=5, width=28) self.entry10.pack(padx=5, expand=True) ############################################## ############################################# frame11 = Frame(self) frame11.pack() frame11.place(x=350, y=100) lbl11x = Label(frame11,text="_______Class 10th Data_______") lbl11x.pack(padx=0, pady=0) lbl11 = Label(text="%",width=15) lbl11.pack(side=LEFT,padx=0, pady=0) lbl11.place(x=350, y=130) self.entry11 = Entry(width=12) self.entry11.pack(padx=1, expand=True) self.entry11.place(x=420, y=130) lbl11a = Label(text="Passing Year",width=15) lbl11a.pack(padx=0, pady=2) lbl11a.place(x=350, y=160) self.entry11a = Entry(width=12) self.entry11a.pack(padx=1, expand=True) self.entry11a.place(x=420, y=160) lbl11b = Label(text="Board Name",width=15) lbl11b.pack(padx=0, pady=2) lbl11b.place(x=350, y=190) self.entry11b = Entry(width=12) self.entry11b.pack(padx=1, expand=True) self.entry11b.place(x=420, y=190) #################################################### frame12 = Frame(self) frame12.pack() frame12.place(x=510, y=100) lbl12x = Label(frame12,text="_______Class 12th Data_______") lbl12x.pack(padx=0, pady=0) lbl12 = Label(text="%",width=15) lbl12.pack(side=LEFT,padx=0, pady=0) lbl12.place(x=510, y=130) self.entry12 = Entry(width=12) self.entry12.pack(padx=1, expand=True) self.entry12.place(x=580, y=130) lbl12a = Label(text="Passing Year",width=15) lbl12a.pack(padx=0, pady=2) lbl12a.place(x=510, y=160) self.entry12a = Entry(width=12) self.entry12a.pack(padx=1, expand=True) self.entry12a.place(x=580, y=160) lbl12b = Label(text="Board Name",width=15) lbl12b.pack(padx=0, pady=2) lbl12b.place(x=510, y=190) self.entry12b = Entry(width=12) self.entry12b.pack(padx=1, expand=True) self.entry12b.place(x=580, y=190) ##################################################### frame13 = Frame(self) frame13.pack() frame13.place(x=670, y=100) lbl13x = Label(frame13,text="________B.Tech Data_________") lbl13x.pack(padx=0, pady=0) lbl13 = Label(text="%",width=15) lbl13.pack(side=LEFT,padx=0, pady=0) lbl13.place(x=670, y=130) self.entry13 = Entry(width=12) self.entry13.pack(padx=1, expand=True) self.entry13.place(x=740, y=130) lbl13a = Label(text="Passing Year",width=15) lbl13a.pack(padx=0, pady=2) lbl13a.place(x=670, y=160) self.entry13a = Entry(width=12) self.entry13a.pack(padx=1, expand=True) self.entry13a.place(x=740, y=160) lbl13b = Label(text="College",width=15) lbl13b.pack(padx=0, pady=2) lbl13b.place(x=670, y=190) self.entry13b = Entry(width=12) self.entry13b.pack(padx=1, expand=True) self.entry13b.place(x=740, y=190) #################################################### frame14 = Frame(self) frame14.pack() frame14.place(x=380, y=255) lbl14 = Label(frame14, text="Any Other Info:") lbl14.pack( padx=5, pady=5) self.entry14 = Text(frame14,height=5, width=28) self.entry14.pack(padx=5, expand=True) frame15 = Frame(self) frame15.pack() frame15.place(x=650, y=290) openButton = Button(frame15, text="Attatch Resume",width=15,command=self.openResume) openButton.pack(padx=5, pady=5) self.entry15 = Entry(frame15) self.entry15.pack(fill=X, padx=4, expand=True) ############################################################# frame16 = Frame(self) frame16.pack() frame16.place(x=450, y=500) closeButton = Button(frame16, text="SUBMIT",width=35,command=self.getDatax) closeButton.pack(padx=5, pady=5) ####################################### framexxx = Frame(self) framexxx.pack() framexxx.place(x=700, y=600) self.xxx = Label(framexxx,text="Recent Changes Will Appear Here") self.xxx.config(font=labelfont8) self.xxx.pack() ####################################### frame000 = Frame(self) frame000.pack() frame000.place(x=50, y=600) self.lbl000= Label(frame000, text="Beta/Sample2.0 | (c) Nakul Rathore") self.lbl000.config(font=labelfont8) self.lbl000.pack( padx=5, pady=5) def openResume(self): ftypes = [('All files', '*')] dlg = tkFileDialog.Open(self, filetypes = ftypes,initialdir='C:/Users/') global x15 fl = dlg.show() #file name x15 = fl temp1 = os.path.basename(fl) global temp2 temp2 = os.path.splitext(temp1)[0] self.entry15.delete(0, 'end') self.entry15.insert(0,temp2) ##################### def getDatax(self): x1 = self.entry1.get() x2 = self.entry2.get() x3 = self.entry3.get() x4 = self.entry4.get() x5 = v.get() x6 = int(self.entry6.get()) x7 = int(self.entry7.get()) x8 = self.entry8.get() x9 = self.entry9.get() x10 = self.entry10.get('1.0', 'end') x11 = int(self.entry11.get()) x11a = int(self.entry11a.get()) x11b = self.entry11b.get() x12 = int(self.entry12.get()) x12a = int(self.entry12a.get()) x12b = self.entry12b.get() x13 = int(self.entry13.get()) x13a = int(self.entry13a.get()) x13b = self.entry13b.get() x14 = self.entry14.get('1.0', 'end') list1=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x11a,x11b,x12,x12a,x12b,x13,x13a,x13b,x14,"=HYPERLINK("+"\""+x15+"\""+","+"\""+temp2+"\""+")"] wb = openpyxl.load_workbook('..\database\database.xlsx') ws = wb.active print(wb.get_sheet_names()) max_row = ws.get_highest_row() #max_col = ws.get_highest_column() max_col = 21 print max_row for i in xrange(1,max_col+1): #print list1[i] ws.cell(row = max_row+1, column = i).value = list1[i-1] ws.cell(row = max_row+1, column = max_col).font = Font(color="0000FF", underline='single') ws.cell(row = max_row+1, column = max_col).alignment = Alignment(horizontal='center') wb.save('..\database\database.xlsx') self.entry1.delete(0, 'end') self.entry2.delete(0, 'end') self.entry3.delete(0, 'end') self.entry4.delete(0, 'end') self.entry6.delete(0, 'end') self.entry7.delete(0, 'end') self.entry8.delete(0, 'end') self.entry9.delete(0, 'end') self.entry10.delete('1.0', '2.0') self.entry11.delete(0, 'end') self.entry11a.delete(0, 'end') self.entry11b.delete(0, 'end') self.entry12.delete(0, 'end') self.entry12a.delete(0, 'end') self.entry12b.delete(0, 'end') self.entry13.delete(0, 'end') self.entry13a.delete(0, 'end') self.entry13b.delete(0, 'end') self.entry14.delete('1.0', '2.0') self.xxx.config(text="Recent Changes Made For : "+x1)
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Review") self.pack(fill=BOTH, expand=True) labelfont20 = ('Roboto', 20, 'bold') labelfont12 = ('Roboto', 12, 'bold') frame0 = Frame(self) frame0.pack() lbl0 = Label(frame0, text="Hi USER") lbl0.config(font=labelfont20) lbl0.pack( padx=5, pady=5) lbl00 = Label(frame0, text="Search here") lbl00.config(font=labelfont12) lbl00.pack( padx=5, pady=5) frame1 = Frame(self) frame1.pack() lbl1 = Label(frame1, text="min %", width=9) lbl1.pack(side=LEFT, padx=7, pady=5) self.entry1 = Entry(frame1,width=20) self.entry1.pack(padx=5, expand=True) frame6 = Frame(self) frame6.pack() closeButton = Button(frame6, text="Get Names",width=12,command=self.getDate) closeButton.pack(padx=5, pady=5) frame7 = Frame(self) frame7.pack() closeButton1 = Button(frame7, text="Open in excel",width=15,command=self.openDate) closeButton1.pack(padx=5, pady=5) frame000 = Frame(self) frame000.pack() self.lbl000= Label(frame000, text=" ") self.lbl000.config(font=labelfont12) self.lbl000.pack( padx=5, pady=5) frame00a = Frame(self) frame00a.pack() self.lbl00a= Label(frame000, text=" ") self.lbl00a.pack( padx=5, pady=5) def getDate(self): x1 = self.entry1.get() nx = "" self.entry1.delete(0, 'end') self.lbl000.config(text="Names Are:") #read csv, and split on "," the line csv_file = csv.reader(open('test.csv', "rb"), delimiter=",") #loop through csv list for row in csv_file: if row[2] >= x1: nx+=str(row[0]+", ") with open("output5.csv", "ab") as fp: wr = csv.writer(fp, dialect='excel') wr.writerow(row) fp.close() self.lbl00a.config(text=nx) def openDate(self): os.system("start "+'output5.csv')
class AvionicsLogger(KRCCModule): def __init__(self, root): super().__init__() self.root = root self.exception = None self.list_string = StringVar() self.listbox = Listbox(root, listvariable=self.list_string, font='TkFixedFont', width=30) self.write_cache = '' self.logfile = None self.enable_logging = BooleanVar() self.enable_logging_checkbox = Checkbutton( root, var=self.enable_logging, text='Enable logging', command=self.enable_logging_changed) self.logfile_label = Label(root, text='Logfile name:') self.logfile_name = StringVar() self.logfile_name_entry = Entry(root, textvar=self.logfile_name) self.load() def write(self, string): if self.enable_logging.get() and self.logfile is None: if self.logfile_name.get() == '': self.logfile_name.set('logs/{}.log'.format(time.time())) self.logfile = io.open(self.logfile_name.get(), 'a') self.logfile.write(self.write_cache) self.write_cache = '' self.logfile.write(string) def cache(self, string): self.write_cache += string def enable_logging_changed(self): if not self.enable_logging.get(): self.logfile_name_entry.configure(state=NORMAL) if self.logfile is not None: self.logfile.close() self.logfile = None self.logfile_name.set('') else: self.logfile_name_entry.configure(state=DISABLED) def establish_connection_and_run(self): error = None dots = 0 connection = None while not self.terminate: try: if connection is None: connection = krpc.connect(name=self.name) self.run_with_connection(connection) error = None dots = 0 except Exception as e: if error != e.args[0]: error = e.args[0] print('\n') print(traceback.format_exc()) sys.stdout.write('Retrying') if dots > 80: dots = 0 sys.stdout.write('\n') sys.stdout.write('.') dots += 1 sys.stdout.flush() time.sleep(1) if connection is not None: connection.close() def run_with_connection(self, connection): logging.debug('KRPC connection established') vessel = connection.space_center.active_vessel ref = vessel.orbit.body.reference_frame flight = connection.add_stream(vessel.flight, ref) floats = [ 'mean_altitude', 'atmosphere_density', 'ballistic_coefficient', 'drag_coefficient', ] vectors = [ 'velocity', ] colon_pos_float = max([len(v) for v in floats]) colon_pos_vec = max([len(v) + 3 for v in vectors]) self.listbox.configure(width=max(colon_pos_float, colon_pos_vec) + 11) # Write the log file header. self.cache('time\t' + '\t'.join(floats) + '\t') s = '{}\t' + '\t'.join('{{}}[{}]'.format(x) for x in [0, 1, 2]) self.cache('\t'.join( s.format(*(v for _ in [0, 1, 2, 3])) for v in vectors)) self.cache('\n') log_sample_interval = 0.01 next_log_sample = time.time() while not self.terminate: values = [time.time()] strings = [] for name in floats: value = flight().__getattribute__(name) values.append(value) padding = colon_pos_float - len(name) + 9 format_string = '{{}}: {{:>{}.3f}}'.format(padding) strings.append(format_string.format(name, value)) for name in vectors: value = flight().__getattribute__(name) magnitude = value[0] padding = colon_pos_float - len(name) + 9 format_string = '{{}}: {{:>{}.3f}}'.format(padding) strings.append(format_string.format(name, magnitude)) values.append(magnitude) padding = colon_pos_vec - len(name) + 2 format_string = '{{}}[{{}}]: {{:>{}.3f}}'.format(padding) for i in [0, 1, 2]: values.append(value[i]) strings.append(format_string.format(name, i, value[i])) if self.enable_logging.get() and time.time() > next_log_sample: self.write('\t'.join(['{}'.format(v) for v in values]) + '\n') next_log_sample = time.time() + log_sample_interval self.list_string.set(tuple(strings)) def run(self): try: self.establish_connection_and_run() self.logfile_name_entry.destroy() self.logfile_label.destroy() self.enable_logging_checkbox.destroy() self.listbox.destroy() except RuntimeError: # Should only happen when KeyboardInterrupt is thrown in the MainThread. pass if self.logfile is not None: self.logfile.close() @property def name(self): return 'Avionics Logger' def load(self): self.listbox.pack(side=LEFT, fill=BOTH) self.logfile_label.pack(side=LEFT, anchor=NW) self.logfile_name_entry.pack(side=LEFT, anchor=NE, fill=X, expand=True) self.enable_logging_checkbox.pack(side=LEFT, anchor=NW)
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Filter Data") self.pack(fill=BOTH, expand=True) labelfont20 = ('Roboto', 15, 'bold') labelfont10 = ('Roboto', 10, 'bold') labelfont8 = ('Roboto', 8, 'bold') frame0 = Frame(self) frame0.pack() lbl0 = Label(frame0, text="Hi Nakul") lbl0.config(font=labelfont20) lbl0.pack( padx=5, pady=5) lbl00 = Label(frame0, text="Filter Data") lbl00.config(font=labelfont10) lbl00.pack( padx=5, pady=5) #################################### ########################################## ############################################ #####printing line lbl5a = Label(text="__________________________________") lbl5a.pack() lbl5a.place(x=170, y=300) lbl5b = Label(text="__________________________________") lbl5b.pack() lbl5b.place(x=480, y=300) self.lbl5c = Label(text="Search Result Will Appear Here") self.lbl5c.pack() self.lbl5c.place(x=170, y=320) self.lbl5d = Label(text="File Name Will Appear Here") self.lbl5d.pack() self.lbl5d.place(x=480, y=320) ############################################ ############################################# ############################################### ############################################## ############################################# frame11 = Frame(self) frame11.pack() frame11.place(x=200, y=100) lbl11x = Label(frame11,text="Class 10th %") lbl11x.pack(padx=0, pady=0) self.entry11 = Entry(width=12) self.entry11.pack(padx=1, expand=True) self.entry11.place(x=200, y=120) #################################################### frame12 = Frame(self) frame12.pack() frame12.place(x=380, y=100) lbl12x = Label(frame12,text="Class 12th %") lbl12x.pack(padx=0, pady=0) self.entry12 = Entry(width=12) self.entry12.pack(padx=1, expand=True) self.entry12.place(x=380, y=120) ##################################################### frame13 = Frame(self) frame13.pack() frame13.place(x=550, y=100) lbl13x = Label(frame13,text="B.Tech %") lbl13x.pack(padx=0, pady=0) self.entry13 = Entry(width=12) self.entry13.pack(padx=1, expand=True) self.entry13.place(x=550, y=120) #################################################### frame9 = Frame(self) frame9.pack() frame9.place(x=350, y=160) lbl9 = Label(frame9, text="HomeTown:") lbl9.pack() self.entry9 = Entry(frame9) self.entry9.pack(fill=X, padx=5, expand=True) ############################################################# frame16 = Frame(self) frame16.pack() frame16.place(x=190, y=250) closeButton = Button(frame16, text="Filter",width=20,command=self.getDatax2) closeButton.pack(padx=5, pady=5) ####################################### frame17 = Frame(self) frame17.pack() frame17.place(x=500, y=250) closeButton = Button(frame17, text="Save & Open",width=20,command=self.getDatax3) closeButton.pack(padx=5, pady=5) ####################################### frame000 = Frame(self) frame000.pack() frame000.place(x=50, y=600) self.lbl000= Label(frame000, text="Beta/Sample2.0 | (c) Nakul Rathore") self.lbl000.config(font=labelfont8) self.lbl000.pack( padx=5, pady=5) def getDatax2(self): x1 = self.entry11.get() if x1 != "": x1 = int(x1) x2 = self.entry12.get() if x2 != "": x2 = int(x2) x3 = self.entry13.get() if x3 != "": x3 = int(x3) x4 = self.entry9.get() list1=[x1,x2,x3,x4] wb = openpyxl.load_workbook('..\database\database.xlsx') ws = wb.active print(wb.get_sheet_names()) max_row = ws.get_highest_row() max_col = ws.get_highest_column() global temp global tempx temp = [] tempx = [] for i in xrange(2,max_row+1): temp.append(i) #print temp if isinstance(x1, int): for i in temp: if ws.cell(row = i, column = 11).value >= x1: tempx.append(i) temp = tempx tempx = [] print temp if isinstance(x2, int): for i in temp: if ws.cell(row = i, column = 14).value >= x2: tempx.append(i) temp = tempx tempx = [] print temp if isinstance(x3, int): for i in temp: if ws.cell(row = i, column = 17).value >= x3: tempx.append(i) temp = tempx tempx = [] print temp if isinstance(x3, str) and x3 != "": for i in temp: if ws.cell(row = i, column = 9).value == x4: tempx.append(i) temp = tempx tempx = [] print temp self.lbl5c.config(text=""+str(len(temp))+" result(s) found") def getDatax3(self): import datetime now = datetime.datetime.now() now = now.replace(microsecond=0,second = 0) now = now.strftime("%d_%B_%y,%I-%M_%p") now = now+".xlsx" if len(temp) != 0: wb1 = openpyxl.load_workbook('..\database\database.xlsx') ws1 = wb1.active wb2 = openpyxl.load_workbook('..\_frame\_frame.xlsx') ws2 = wb2.active for i in xrange(2,len(temp)+2): for j in xrange(1,22): ws2.cell(row = i, column = j).value = ws1.cell(row = temp[i-2], column = j).value wb2.save('..\Result\\'+now) tempstart = '..\Result\\'+now self.lbl5d.config(text="File is :: "+"\""+now+"\"") os.system("start "+tempstart) self.entry11.delete(0, 'end') self.entry12.delete(0, 'end') self.entry13.delete(0, 'end') self.entry9.delete(0, 'end')
def show_report(master, data): """Выводит панель генерации отчетов.""" def choose_assortiment(event): """Функция, срабатывающая при выборе товара из списка товаров.""" select = listbox_goods.curselection() if select: index = int(select[0]) if assortiment[index]: show_report.goods = assortiment[index] title.configure(text=assortiment[index].name) else: show_report.goods = None title.configure(text=u'Товары:') checks_fill() #--------------------------------------- def assortiment_fill(): """Функция заполнения списков товаров/ингредиентов""" for q in range(len(assortiment)): # Очищаем список товаров del(assortiment[0]) listbox_goods.delete(0, END) for cath in queries.cathegories(): assortiment.append(None) listbox_goods.insert(END, '') assortiment.append(None) head = '-' * (REPORT_WIDTH - len(cath.name) -1) + cath.name + u'-' listbox_goods.insert(END, head) for item in queries.items_in_cathegory(cath): assortiment.append(item) listbox_goods.insert(END, ' ' + item.name) if not item.show: listbox_goods.itemconfig(END, {'fg':'grey'}) assortiment.append(None) listbox_goods.insert(END, '') assortiment.append(None) head = '-' * (REPORT_WIDTH - len(u'Ингредиенты') -1) + u'Ингредиенты-' listbox_goods.insert(END, head) for item in queries.items_in_cathegory(None): assortiment.append(item) listbox_goods.insert(END, ' ' + item.name) if not item.show: listbox_goods.itemconfig(END, {'fg':'grey'}) #--------------------------------------- def checks_fill(event=None): """Функция заполнения списка параметров для отчета""" listbox_checks.delete(0, END) reporing = radioVar.get() listbox_checks.insert(END, reporing + ':') if varGoods.get(): listbox_checks.insert(END, u'- товар' ) if reporing == u'Расходы': listbox_checks.itemconfig(END, {'fg':'grey'}) elif not show_report.goods: listbox_checks.itemconfig(END, {'fg':'red'}) if varDate.get(): listbox_checks.insert(END, u'- дата' ) if reporing == u'Остатки': listbox_checks.itemconfig(END, {'fg':'grey'}) elif not (cal_from.selection or cal_to.selection): listbox_checks.itemconfig(END, {'fg':'red'}) elif (cal_from.selection and cal_to.selection) and ( cal_from.selection > cal_to.selection): listbox_checks.itemconfig(END, {'fg':'red'}) if varCath.get(): listbox_checks.insert(END, u'- категория' ) if reporing == u'Расходы': listbox_checks.itemconfig(END, {'fg':'grey'}) if varCheck.get(): listbox_checks.insert(END, u'- чек' ) if reporing <> u'Продажи': listbox_checks.itemconfig(END, {'fg':'grey'}) else: try: check1 = int(chekVar1.get()) check2 = int(chekVar2.get()) except: listbox_checks.itemconfig(END, {'fg':'red'}) else: if check1 > check2: listbox_checks.itemconfig(END, {'fg':'red'}) if varLost.get(): listbox_checks.insert(END, u'- причина' ) if reporing <> u'Списания': listbox_checks.itemconfig(END, {'fg':'grey'}) if radioVar2.get() <> u'Не учитывать': listbox_checks.insert(END, u'- скидка' ) if reporing <> u'Продажи': listbox_checks.itemconfig(END, {'fg':'grey'}) #--------------------------------------- class Calendar2(Calendar): """Класс с переопределенным (дополненным) методом клика по календарю.""" def _pressed(self, evt): """Clicked somewhere in the calendar.""" Calendar._pressed(self, evt) checks_fill() #--------------------------------------- def apply(): """Открывает окно с выбранным отчетом на основании выбранных фильтров""" args = {} if varGoods.get() and radioVar.get() <> u'Расходы': if show_report.goods: args['item'] = show_report.goods else: tkMessageBox.showinfo(u'Внимание!', u'Товар не был выбран, так что учитываться не будет!') if varDate.get() and radioVar.get() <> u'Остатки': if cal_from.selection or cal_to.selection: if (cal_from.selection > cal_to.selection): tkMessageBox.showinfo(u'Ошибка!', u'Начальный день акции больше конечного!\nФильтр не учитывается.') else: if cal_from.selection: args['from_date'] = cal_from.selection if cal_to.selection: args['to_date'] = cal_to.selection else: tkMessageBox.showinfo(u'Внимание!', u'Даты не были выбраны, так что учитываться не будут!') if varCath.get(): if radioVar.get() <> u'Расходы': args['cathegory'] = show_report.cathegory if varCheck.get(): if radioVar.get() == u'Продажи': try: check1 = int(chekVar1.get()) check2 = int(chekVar2.get()) except: tkMessageBox.showinfo(u'Ошибка!', u'Проверьте содержимое числовых полей чека!\nФильтр не учитвается.') else: if check1 > check2: tkMessageBox.showinfo(u'Ошибка!', u'Начальный номер чека больше конечного!\nФильтр не учитывается.') else: args['from_check'] = check1 args['to_check'] = check2 if varLost.get(): if radioVar.get() == u'Списания': args['reason'] = show_report.lost if radioVar2.get() <> u'Не учитывать': if radioVar.get() == u'Продажи': if radioVar2.get() == u'Со скидкой': args['discount'] = True else: args['discount'] = False if radioVar.get() == u'Продажи': report_sell(master, **args) elif radioVar.get() == u'Списания': report_lost(master, **args) elif radioVar.get() == u'Остатки': report_storage(master, **args) elif radioVar.get() == u'Приход': report_incoming(master, **args) elif radioVar.get() == u'Расходы': report_cash(master, **args) #=========================== СОЗДАНИЕ ИНТЕРФЕЙСА =========================== frame = Canvas(master, relief=GROOVE, highlightthickness=0) frame.pack(side=TOP, fill=BOTH, expand=YES) if USE_BACKGROUND: frame.create_image(0,0, anchor='nw', image=data.photo) #------------------------------ ЛЕВЫЙ ФРЕЙМ -------------------------------- leftFrame = Frame(frame, relief=GROOVE) leftFrame.pack(side=LEFT, fill=Y, pady=CONTROL_PAD, padx=CONTROL_PAD/2) title = Label(leftFrame, text=u'Товары:', font=('Lucida Console', FONT_SIZE_BIG)) title.pack(pady=5) varGoods = IntVar(leftFrame) chb_goods = Checkbutton(leftFrame, text=u'Фильтр по товару', variable=varGoods, command=checks_fill) chb_goods.pack(side=BOTTOM) assortiment = [] show_report.goods = None scrollbar_goods = Scrollbar(leftFrame) listbox_goods = Listbox(leftFrame, yscrollcommand=scrollbar_goods.set, width = REPORT_WIDTH, activestyle='dotbox', font=('Lucida Console', BILL_FONT_SIZE)) listbox_goods.pack(side=LEFT, fill=BOTH) scrollbar_goods.config(command=listbox_goods.yview) scrollbar_goods.pack(side=LEFT, fill=Y) listbox_goods.bind('<<ListboxSelect>>', choose_assortiment) #------------------------------ СРЕДНИЙ ФРЕЙМ ------------------------------ middleFrame = Frame(frame, relief=GROOVE) middleFrame.pack(side=TOP, pady=CONTROL_PAD, padx=CONTROL_PAD, anchor='w', ipadx=CONTROL_PAD/3, ipady=CONTROL_PAD/3) radioVar = StringVar(middleFrame) radioVar.set("Продажи") variants = ("Продажи", "Остатки", "Приход", "Списания", "Расходы") listbox_checks = Listbox(middleFrame, width = 12, height=6, activestyle='dotbox', font=('Lucida Console', BILL_FONT_SIZE)) listbox_checks.pack(side=RIGHT, fill=Y, padx=CONTROL_PAD/2, pady=CONTROL_PAD/2) Button(middleFrame, text='СФОРМИРОВАТЬ\nОТЧЕТ', style='Chosen.TButton', command=apply).pack(side=RIGHT, padx = CONTROL_PAD, pady = CONTROL_PAD, ipadx=10, ipady=10) for txt in variants: Radiobutton(middleFrame, text=txt,indicatoron = 0, width = 10, variable=radioVar, command=checks_fill, value=txt, font=('Verdana', FONT_SIZE)).pack(padx = CONTROL_PAD, pady=CONTROL_PAD/3, anchor=W) #----------------------------------------- middleFrame2 = Frame(frame, relief=GROOVE) middleFrame2.pack(padx=CONTROL_PAD, pady=CONTROL_PAD, anchor='w') date_from = Label(middleFrame2, text=u'Начальная дата:', font = ('Verdana', FONT_SIZE)) date_from.grid(column=0, row=0) cal_from = Calendar2(middleFrame2, firstweekday=0) cal_from.grid(column=0, row=1, pady=CONTROL_PAD, padx=CONTROL_PAD) date_to = Label(middleFrame2, text=u'Конечная дата\n(включительно):', font = ('Verdana', FONT_SIZE)) date_to.grid(column=1, row=0) cal_to = Calendar2(middleFrame2, firstweekday=0) cal_to.grid(column=1, row=1, pady=CONTROL_PAD, padx=CONTROL_PAD) varDate = IntVar(leftFrame) chb_date = Checkbutton(middleFrame2, text=u'Фильтр по датам', variable=varDate, command=checks_fill) chb_date.grid(column=0, row=2, columnspan=2, pady=CONTROL_PAD/3) #---------------------- Меню выбора категории -------------- middleFrame3 = Frame(frame, relief=GROOVE) middleFrame3.pack(padx=CONTROL_PAD, pady=CONTROL_PAD, anchor='w') def menu_change(key): """Меняет текущую категорию.""" if key: cathMenu.configure(text=key.name) else: cathMenu.configure(text=u'-Отсутствует-') show_report.cathegory = key def menu_update(): """Обновляет меню выбора категорий.""" menu = Menu(cathMenu, tearoff=0) cathMenu['menu'] = menu for cath in queries.cathegories(): menu.add_command(label=cath.name, font=('Verdana', FONT_SIZE_BIG), command=lambda key=cath: menu_change(key)) menu.add_command(label=u'-Отсутствует-', font=('Verdana',FONT_SIZE_BIG), command=lambda: menu_change(None)) Style().configure('TMenubutton', font=('lucida console', FONT_SIZE_BIG), justify='left') show_report.cathegory = None varCath = IntVar(middleFrame3) chb_cath = Checkbutton(middleFrame3, text=u'Фильтр по категории', variable=varCath, command=checks_fill) chb_cath.grid(column=0, row=1, columnspan=2, pady=(0, CONTROL_PAD)) Label(middleFrame3, text='Категория:', font=('Verdana', FONT_SIZE_BIG) ).grid(column=0, row=0, pady=CONTROL_PAD/3) smallFrame = Frame(middleFrame3, relief=GROOVE) smallFrame.grid(column=1, row=0, pady=CONTROL_PAD/3) cathMenu = Menubutton(smallFrame, text=u'-Отсутствует-', width=15, style='TMenubutton') cathMenu.pack(fill=BOTH, pady=5, padx=5) menu_update() #----------------------------- ЧЕКИ ---------------------------- check_frame = TkFrame(middleFrame3, relief=GROOVE, bg='#' + REPORT_COLOR) check_frame.grid(column=0, row=2, columnspan=2, pady=(CONTROL_PAD/3, 0), sticky='nwes') varCheck = IntVar(middleFrame3) chb_check = Checkbutton(middleFrame3, text=u'Фильтр по номеру чека', variable=varCheck, command=checks_fill, activebackground='#' + REPORT_COLOR, bg='#' + REPORT_COLOR) chb_check.grid(column=0, row=3, columnspan=2, pady=(0, CONTROL_PAD), sticky='nwes') chekVar1 = StringVar(check_frame, value=u'') ent1 = Entry(check_frame, textvariable=chekVar1, width=7,font=('Verdana', FONT_SIZE_BIG)) ent1.pack(side=LEFT, pady=CONTROL_PAD/3, padx=CONTROL_PAD) ent1.bind("<KeyRelease>", checks_fill) Label(check_frame, text=u'<= номера чеков <=', bg='#' + REPORT_COLOR, font = ('Verdana', FONT_SIZE)).pack(side=LEFT, pady=CONTROL_PAD/3, padx=CONTROL_PAD) chekVar2 = StringVar(check_frame, value=u'') ent2 = Entry(check_frame, textvariable=chekVar2, width=7,font=('Verdana', FONT_SIZE_BIG)) ent2.pack(side=LEFT, pady=CONTROL_PAD/3, padx=CONTROL_PAD) ent2.bind("<KeyRelease>", checks_fill) #---------------------- Меню выбора причины списания -------------- def menu_change_lost(key): """Меняет текущую причину списания.""" if key: lostMenu.configure(text=key.reason) show_report.lost = key def menu_update_lost(): """Обновляет меню выбора причин списания.""" menu = Menu(cathMenu, tearoff=0) lostMenu['menu'] = menu for lost in queries.full_lost_reasons_list(): menu.add_command(label=lost.reason, font=('Verdana', FONT_SIZE_BIG), command=lambda key=lost: menu_change_lost(key)) Style().configure('TMenubutton', font=('lucida console', FONT_SIZE_BIG), justify='left') lost_reasons_list = queries.lost_reasons_list() show_report.lost = lost_reasons_list[0] if lost_reasons_list else None varLost = IntVar(middleFrame) chb_lost = Checkbutton(middleFrame3, text=u'Фильтр по причине списания', variable=varLost, command=checks_fill) chb_lost.grid(column=0, row=5, columnspan=2, pady=(0, CONTROL_PAD)) Label(middleFrame3, text='Причина списания:', font=('Verdana', FONT_SIZE_BIG) ).grid(column=0, row=4, pady=CONTROL_PAD/3, padx=CONTROL_PAD/3) smallFrame2 = Frame(middleFrame3, relief=GROOVE) smallFrame2.grid(column=1, row=4, pady=CONTROL_PAD/3) lostMenu = Menubutton(smallFrame2, text=u'брак', width=19, style='TMenubutton') lostMenu.pack(fill=BOTH, pady=5, padx=5) menu_update_lost() #-------------------------------------------------------------- Label(middleFrame3, text='Фильтр по скидке.', font=('Verdana', FONT_SIZE), bg='#' + REPORT_COLOR).grid(column=0, row=7, sticky='nwes', columnspan=2) discFrame = TkFrame(middleFrame3, relief=GROOVE, bg='#' + REPORT_COLOR) discFrame.grid(column=0, row=6, columnspan=2, ipady=(CONTROL_PAD), sticky='nwes') radioVar2 = StringVar(middleFrame) radioVar2.set(u'Не учитывать') variants = (u'Не учитывать', u'Со скидкой', u'Без скидки') for txt in variants: Radiobutton(discFrame, text=txt,indicatoron = 0, width = 13, variable=radioVar2, command=checks_fill, value=txt, font=('Verdana', FONT_SIZE)).pack(side=LEFT, padx = CONTROL_PAD/2, pady=CONTROL_PAD/3, anchor=W) #--------------------------------первый запуск----------------------------- assortiment_fill() checks_fill()
class Example(Frame): #Initialise values ctrlpt1=[55,55] ctrlpt2=[150,120] ctrlpt3=[55,215] pt1=[50,50] pt2=[100,100] clickno=2 toggle = 1 div_num = 10 #initilise Frame then initialise this Example class using initUI() def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Grass") #Configure parent for column layout Style().configure("TButton", padding=(0, 5, 0, 5), font='serif 10') self.columnconfigure(0, pad=3) self.columnconfigure(1, pad=3) self.columnconfigure(2, pad=3) self.columnconfigure(3, pad=3) self.rowconfigure(0, pad=3) self.rowconfigure(1, pad=3) self.rowconfigure(2, pad=3) self.rowconfigure(3, pad=3) self.rowconfigure(4, pad=3) self.rowconfigure(5, pad=3) self.rowconfigure(6, pad=3) self.rowconfigure(7, pad=3) self.rowconfigure(8, pad=3) frame1 = Frame(self) frame1.grid(row=0,columnspan=4) self.lbl1 = Label(frame1, text="") self.lbl1.pack(side=LEFT, padx=5, pady=5) frame2 = Frame(self) frame2.grid(row=1,columnspan=4) lbl2 = Label(frame2, text="Divisions", width=6) lbl2.pack(side=LEFT, padx=5, pady=5) self.entry1=Entry(frame2) self.entry1.pack(fill=X, padx=5, expand=True) frame3 = Frame(self) frame3.grid(row=2,columnspan=4) self.lbl3 = Label(frame3, text="Divisions =%r"%self.div_num) self.lbl3.pack(side=LEFT, expand=True) set_point = Button(self, text="Set divisions", command=self.get_div) set_point.grid(row=3, columnspan=2) self.stop_place = Button(self, text="Toggle delete",\ command=self.change_toggle) self.stop_place.grid(row = 3, column = 2,columnspan=2) clr_btn = Button(self, text="Clear Canvas", command=self.clear_canvas) clr_btn.grid(row = 4, column = 0,columnspan=2) drw_btn = Button(self, text="Draw lines", command=self.draw_ctrllines) drw_btn.grid(row = 4, column = 2,columnspan=2) div = Button(self, text="Divide", command=self.draw_divide) div.grid(row = 5, column = 0,columnspan=2) strart = Button(self, text="Strings", command=self.string_art) strart.grid(row = 5, column = 2,columnspan=2) plotpar = Button(self, text="Parabola", command=self.plot_para) plotpar.grid(row = 6, column = 0,columnspan=2) self.w = Canvas(self, width=200, height=900) self.w.grid(row=7, columnspan=4) #Draw initial control points for user self.id1=self.w.create_oval(self.ctrlpt1[0] - 2, self.ctrlpt1[1] - 2,\ self.ctrlpt1[0] + 2,self.ctrlpt1[1] + 2,fill="black",tags='maybe') self.w.tag_bind(self.id1,'<Button-1>',self.del_elem) id2=self.w.create_oval( self.ctrlpt2[0] - 2, self.ctrlpt2[1] - 2, self.ctrlpt2[0] + 2,self.ctrlpt2[1] + 2,fill="black" ) self.w.tag_bind(id2,'<Button-1>',self.del_elem) self.id3=self.w.create_oval(self.ctrlpt3[0] - 2, self.ctrlpt3[1] - 2,\ self.ctrlpt3[0] + 2,self.ctrlpt3[1] + 2,fill="black") self.w.tag_bind(self.id3,'<Button-1>',self.del_elem) self.w.bind('<Motion>',self.motion) print self.id1 movebut = Button(self, text="Grass", command=self.grass_polygon) movebut.grid(row = 6, column = 2,columnspan=2) #self.w.bind('<Button-1>',self.clicky) self.pack() def get_div(self): try: self.div_num=int(self.entry1.get()) self.lbl1.config(text="Division number set") self.lbl3.config(text="Divisions =%r"%self.div_num) except ValueError: self.lbl1.config(text="Incorrect entry type") def draw_divide(self): self.w.delete("all") list1=self.divide_line(self.ctrlpt1,self.ctrlpt2) for n in range(len(list1)): id=self.w.create_oval( list1[n][0] - 2, list1[n][1] - 2, list1[n][0] + 2,list1[n][1] + 2,fill="black" ) self.w.tag_bind(id,'<Button-1>',self.del_elem) list2=self.divide_line(self.ctrlpt2,self.ctrlpt3) for n in range(len(list2)): id=self.w.create_oval( list2[n][0] - 2, list2[n][1] - 2, list2[n][0] + 2,list2[n][1] + 2,fill="black" ) self.w.tag_bind(id,'<Button-1>',self.del_elem) def grass_polygon(self): lst=self.intersect_list() for n in range(len(lst)-1): width=5+10*(1-abs(1-2*(n+1)/float(len(lst)))) m1 = self.slope(lst[n],lst[n+1]) m = -1/self.slope(lst[n],lst[n+1]) print lst[n],m1,m dx = math.sqrt(width**2/(1+m**2)) dy = math.sqrt(width**2/(1+1/m**2)) x1=math.ceil(lst[n][0]-dx) y1=math.ceil(lst[n][1]-dy) x2=math.ceil(lst[n][0]+dx) y2=math.ceil(lst[n][1]+dy) x3=lst[n+1][0]+dx y3=lst[n+1][1]+dy x4=lst[n+1][0]-dx y4=lst[n+1][1]-dy if n==0: x2=x1=lst[n][0] y2=y1=lst[n][1] self.w.create_polygon(x1,y1,x2,y2,x3,y3,x4,y4,fill='green') def dist(self,point1,point2): x1,y1 = point1 x2,y2 = point2 distance = math.sqrt(float((x2-x1))**2+(y2-y1)**2) return distance def slope(self,point1,point2): x1,y1 = point1 x2,y2 = point2 if abs(x2-x1) > 0.00001: m1=(y2+y1)/float(x2-x1) return m1 else: return none def intersect_list(self): list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2) list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3) zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)]) para_list=[0]*(len(zplst)+1) para_list[0]=self.ctrlpt1 para_list[len(zplst)]=self.ctrlpt3 for n in range(len(zplst)-1): para_list[n+1]=self.intersection( zplst[n][0],zplst[n][1], zplst[n+1][0],zplst[n+1][1] ) return para_list def plot_para(self): plotlist=self.intersect_list() for n in range(len(plotlist)): id=self.w.create_oval( plotlist[n][0]-2, plotlist[n][1]-2, plotlist[n][0]+2, plotlist[n][1]+2,fill="black" ) self.w.tag_bind(id,'<Button-1>',self.del_elem) def string_art(self): list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2) list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3) zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)]) for n in range(len(zplst)): id=self.w.create_line( zplst[n][0][0], zplst[n][0][1], zplst[n][1][0], zplst[n][1][1],fill="black" ) self.w.tag_bind(id,'<Button-1>',self.del_elem) def intersection(self,point1,point2,point3,point4): x1,y1 = point1 x2,y2 = point2 x3,y3 = point3 x4,y4 = point4 if abs(x2-x1) > 0.00001 and abs(x4-x3) > 0.00001: m1=(y2-y1)/float(x2-x1) c1=y1-float(m1)*x1 m2=(y4-y3)/float(x4-x3) c2=y3-float(m2)*x3 xint = (c2-c1)/float((m1-m2)) yint = m1*((c2-c1)/float((m1-m2)))+c1 else: if abs(x2-x1) < 0.00001: xint=x2 yint=(y4-y3)*x2/float(x4-x3)+y3-float((y4-y3)/float(x4-x3))*x3 else: xint=x3 yint=(y2-y1)*x3/float(x2-x1)+y1-float((y2-y1)/float(x2-x1))*x1 return [xint,yint] def draw_ctrllines(self): x1,y1=self.ctrlpt1 x2,y2=self.ctrlpt2 x3,y3=self.ctrlpt3 line1 = self.w.create_line(x1, y1, x2, y2) self.w.tag_bind(line1,'<Button-1>',self.del_elem) line2 = self.w.create_line(x2, y2, x3, y3) self.w.tag_bind(line2,'<Button-1>',self.del_elem) def divide_line(self,point1,point2): x1,y1 = point1 x2,y2 = point2 list = [0]*(self.div_num+1) for n in range(self.div_num+1): list[n]=[x1+(n)*(x2-x1)/float(self.div_num),y1+(n)*(y2-y1)/float(self.div_num)] return list def change_toggle(self): self.toggle=(self.toggle+1)%2 if self.toggle == 1: self.stop_place.config(text="Delete mode off") else: self.stop_place.config(text="Delete mode on") def del_elem(self,event): if self.toggle==1: pass else: print "Hello" event.widget.delete("current") def midpoint(self,x1,x2,y1,y2): xmid=(x1+x2)/2 ymid=(y1+y2)/2 return xmid,ymid def motion(self,event): w=self.parent.winfo_screenwidth() h=self.parent.winfo_screenheight() x,y = self.w.winfo_pointerxy() print x-536,y-353 def clear_canvas(self): self.w.delete("all")
class CreateServer(Frame): def __init__(self, parent, controller): Frame.__init__(self, parent) self.controller = controller CreateServer.local_world = None label_1 = Label(self, text="Create server\n\n\n\n", font=TITLE_FONT, justify=CENTER, anchor=CENTER) label_2 = Label(self, text="Server name:") label_3 = Label(self, text="Gamefield (MxN):") CreateServer.plx_name = 'none' CreateServer.game_dim = '10X10' self.entry_1 = Entry(self) self.entry_2 = Entry(self) self.entry_2.insert(0, '10x10') self.entry_1.bind("<Key>", self.checkString) self.button1 = Button(self, text="Create",state="disabled", command= self.callback_set) self.button2 = Button(self, text="Back", command=lambda: controller.show_frame("StartPage")) label_1.pack(side="top", fill="x", pady=10) label_2.pack() self.entry_1.pack() label_3.pack() self.entry_2.pack() self.button1.pack(pady=10) self.button2.pack(pady=20) def com(self, controller, next_frame): controller.show_frame(next_frame) def checkString(self, event): if self.entry_1: self.button1.config(state="normal") def callback_set(self): set_global_state(1) if self.get_name_field(): self.controller.show_frame("ChooseType") # process user inputs def get_name_field(self): CreateServer.plx_name = self.entry_1.get() CreateServer.game_dim = self.entry_2.get().upper() flag2 = False flag1 = self.string_check(CreateServer.plx_name,"Invalid server name") if flag1: flag2 = self.string_check(CreateServer.game_dim,"Invalid game field parameters") if flag2: m_split=CreateServer.game_dim.split('X') if len(m_split)==2: try: _ = int(m_split[0]) except: flag2 = False try: _ = int(m_split[1]) except: flag2 = False else: flag2 = False if flag2 == False: tkMessageBox.showwarning("Error message", "Invalid game field parameters!") return flag1 & flag2 # check if the string is usable def string_check(self,s,msg): temp = False try: s.decode('ascii') except UnicodeEncodeError: print "it was not an ascii-encoded unicode string" tkMessageBox.showwarning("Error message", msg) except UnicodeDecodeError: print "it was not an ascii-encoded unicode string" tkMessageBox.showwarning("Error message", msg) else: if len(CreateServer.plx_name) < 11 and len(CreateServer.plx_name) >= 1: temp = True else: tkMessageBox.showwarning("Error message", "Please input 1-10 characters!") return temp
item = sortable_list.create_item(value=i) label = Label(item, text="this is a label %s"%i) label.pack(anchor=W, padx= (4,0), pady= (4,0)) sortable_list.add_item(item) frame = Frame(root) frame.pack(fill=X, pady=(0, 10)) indexVar = IntVar() label = Label(frame, text="Entry index of item to delete:") label.pack(side=LEFT, padx=(10,6)) entry_of_index = Entry(frame,textvariable= indexVar, width=3) def delete_item(): try: index = indexVar.get() except ValueError: messagebox.showerror("Error", "Not a valid integer") return entry_of_index.delete(0, END) sortable_list.delete_item(index) entry_of_index.bind('<Return>', delete_item) entry_of_index.pack(side=LEFT) Button(frame, text="Delete", command=delete_item).pack(side=LEFT, padx=(3,0)) root.mainloop()
class mSim(Frame): def __init__(self, parent): self.serialStatus = False #create variables self.startmotor = BooleanVar() self.logstate = BooleanVar() self.loggedData = [] self.throttlevar = StringVar() self.throttleval = IntVar() #default values self.throttlevar.set("0%") self.throttleval.set(0) #base frame init Frame.__init__(self, parent) self.parent = parent self.initUI() self.centerWindow() self.PERIOD_LENGTH_Log = 100 #milliseconds self.PERIOD_LENGTH_Scan = 1000 #milliseconds self.PERIOD_LENGTH_Refresh = 300 #milliseconds self.parent.after(0, self.runScan) self.parent.after(0, self.runLog) self.parent.after(0, self.runRefresh) def runScan(self): #serial port scanning function """ Lists serial port names :raises EnvironmentError: On unsupported or unknown platforms :returns: A list of the serial ports available on the system """ if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): # this excludes your current terminal "/dev/tty" ports = glob.glob('/dev/tty[A-Za-z]*') elif sys.platform.startswith('darwin'): ports = glob.glob('/dev/tty.*') else: raise EnvironmentError('Unsupported platform') result = [] for port in ports: try: s = serial.Serial(port) s.close() result.append(port) except (OSError, serial.SerialException): pass menu = self.drop["menu"] menu.delete(0, "end") menu.add_command(label="None", command=lambda value="None": self.selected_s_Port.set(value)) for string in result: menu.add_command(label=string, command=lambda value=string: self.selected_s_Port.set(value)) self.parent.after(self.PERIOD_LENGTH_Scan, self.runScan) def runLog(self): #this will probably not work since you're not appending to if (self.logstate.get() == True) and (self.serialStatus == True): #logging data data = dict(zip(*[self.SC.dict.keys(), zip(*self.SC.dict.values())[-1]])) if 'l' not in locals(): # a dictionary with a deque of the recent data for each message type -Austin l = [] if self.loggedData == []: #if empty add titles l=[data.keys()] data = data.values() self.loggedData.append(data) self.parent.after(self.PERIOD_LENGTH_Log, self.runLog) def runRefresh(self): #Refresh figures function self.a.clear() self.b.clear() self.c.clear() self.d.clear() if not self.serialStatus: #TODO: Put SerialComm data buffer here v . Timestamps (from python?) on x axis, values on y-axis #Helpful Info: plot([xvals],[yvals]) self.a.plot([0],[0]) self.b.plot([0],[0]) self.c.plot([0],[0]) self.d.plot([0],[0]) else: self.SC.processData(5) # This param is the number of bytes to try for a message -Austin timestamps = [val / 1000.0 if val != None else val for val in self.SC.dict['Timestamp']] self.a.plot(timestamps, self.SC.dict['Thrust']) self.b.plot(timestamps, self.SC.dict['Rot Speed']) self.c.plot(timestamps, self.SC.dict['Current']) self.d.plot(timestamps, self.SC.dict['Voltage']) #set labels for graphs (could make automatic later) self.a.set_xlabel('time (s)') self.a.set_ylabel('Thrust (N)') self.b.set_xlabel('time (s)') self.b.set_ylabel('RPM') self.c.set_xlabel('time (s)') self.c.set_ylabel('Current (A)') self.d.set_xlabel('time (s)') self.d.set_ylabel('Voltage (V)') #try drawing the canvas try: self.canvas.draw() except: pass #just ignore it, you'll do better next time self.parent.after(self.PERIOD_LENGTH_Refresh, self.runRefresh) def centerWindow(self): w = 900 #eh, who needs scaling anyways h = 600 sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() x = (sw - w)/2 y = (sh - h)/2 self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y)) def initUI(self): #Parent Frame self.parent.title("Test Stand Control Panel") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) # Frame 1 (top) frame1 = Frame(self) frame1.pack(fill=X, expand=1) #Start motor button startButton = Button(frame1, text="Start Motor", command=self.startMotor) startButton.pack(side=LEFT, padx=5, pady=5) #Throttle slider lbl1 = Label(frame1, text="Throttle (0-100):", width=14) lbl1.pack(side=LEFT, padx=5, pady=5) self.scale = Scale(frame1, from_=0, to=100, command=self.onScaleThrottle) self.scale.pack(side=LEFT, padx=15) self.label = Label(frame1, text="throttle", textvariable=self.throttlevar, width=5) self.label.pack(side=LEFT) #Throttlesweep checkbutton self.autovar = BooleanVar() cb = Checkbutton(frame1, text="Throttle Sweep", variable=self.autovar, command=self.onClickAuto) cb.pack(side=LEFT, padx=15) #Com port selection field droplbl = Label(frame1, text="Serial Port:", width=10) droplbl.pack(side=LEFT, padx=5, pady=5) self.selected_s_Port = StringVar() self.s_Ports = [] self.drop = OptionMenu(frame1,self.selected_s_Port,"None",*self.s_Ports) self.drop.pack(side=LEFT, padx=5) #baudrate selection field (disabled) ## drop2lbl = Label(frame1, text="Baudrate:", width=9) ## drop2lbl.pack(side=LEFT, padx=5, pady=5) ## self.baudrate = StringVar() ## baudrates = [9600, 19200, 38400, 57600, 115200] ## drop2 = OptionMenu(frame1,self.baudrate,*baudrates) ## drop2.pack(side=LEFT, padx=5) #Start serial button comsButton = Button(frame1, text="Start Serial", command=self.startSerial) comsButton.pack(side=LEFT, padx=5, pady=5) #Stop serial button comsStopButton = Button(frame1, text="Stop Serial", command=self.stopSerial) comsStopButton.pack(side=LEFT, padx=5, pady=5) # Frame 2 (second line) frame2 = Frame(self) frame2.pack(fill=X, expand=1) #Amperage entry lbl2 = Label(frame2, text="Max Motor Current (A):", width=21) lbl2.pack(side=LEFT, padx=5, pady=5) self.MaxA_Entry = Entry(frame2) self.MaxA_Entry.pack(side="left", fill=X, padx=5, expand=False) self.MaxA_Entry.insert(0, 10) #Voltage entry lbl3 = Label(frame2, text="Max Motor Voltage (V):", width=20) lbl3.pack(side=LEFT, padx=5, pady=5) self.MaxV_Entry = Entry(frame2) self.MaxV_Entry.pack(side="left", fill=X, padx=5, expand=False) self.MaxV_Entry.insert(0, 14) #Update button updateButton = Button(frame2, text="Update Values", command=self.updateValues) updateButton.pack(side=LEFT, padx=5, pady=5) # Graph Frame framegraph = Frame(self) framegraph.pack(fill=X, expand=1) #Init figures f = Figure(figsize=(4,4), dpi=100) self.a = f.add_subplot(2, 2, 1) self.d = f.add_subplot(2, 2, 4) self.c = f.add_subplot(2, 2, 3) self.b = f.add_subplot(2, 2, 2) f.set_tight_layout(True) self.canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(f, master=self) self.canvas.show() self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True) #Display Toolbar toolbar = NavigationToolbar2TkAgg(self.canvas, framegraph) toolbar.update() self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True) # Frame 0 (Bottom text) frame0 = Frame(self) frame0.pack(side="bottom", fill="x", expand=1) #Display text (allows to give user information) self.textboxvar = StringVar() self.info = Label(frame0, textvariable=self.textboxvar) self.info.pack(side=LEFT, padx=5, pady=5) # Button Frame (large buttons, near bottom) s = Style() #has its own style s.configure('My.TFrame',background='#f7edc3') #fancy colors framered = Frame(self, style='My.TFrame') framered.pack(side="bottom", fill="x", expand=1) #used the tk instead of ttk library for this, allows font and color mods #Save Button self.saveButton = tk.Button(framered, text="Save Data", bg='green', font=('Arial',20,'bold'), command=self.saveData) self.saveButton.pack(side="left", padx=5, pady=5) #Log button self.logButton = tk.Button(framered, text="Start Data Logging", bg="blue", font=('Arial',20,'bold'), command=self.logData) self.logButton.pack(side="left", padx=5, pady=5) #Stop button self.stopButton = tk.Button(framered, text="Stop Motor", bg='red', font=('Arial',20,'bold'), command=self.stopMotor) self.stopButton.pack(side="right", padx=5, pady=5) #Button behavior functions (hopefully self-explanatory) def onClickAuto(self): #for the throttle sweep (should rename) pass #(I guess I can make it do something if I want) def MaxA(self): #self.MaxA_Entry.get() pass def MaxV(self): pass #not sure why these are even functions def onScaleThrottle(self, val): throttle = str(int(float(val))) self.throttlevar.set(throttle + "%") self.throttleval.set(throttle) try: self.SC.sendThrottleSetting(self.throttleval.get()) except: self.textboxvar.set("Something went wrong, is serial connected?") def startSerial(self): COM_Port = self.selected_s_Port.get() #print type(COM_Port) #print COM_Port if "COM" in COM_Port: self.textboxvar.set("Starting Serial on port " + self.selected_s_Port.get()) #serialThread = Thread(target=SerialComm, args=(COM_Port)) #probably want to pass the self.vars? #serialThread.start() #threads.append(serialThread) try: self.ser = serial.Serial(self.selected_s_Port.get(), 9600) #Baud rate = 9600 self.SC = SerialComm(self.ser, 50) #Dict deques' maxlength = 50 for key in self.SC.dict.keys(): #Initialize dict deques with values so no length errors -Austin for i in range(self.SC.dict[key].maxlen): self.SC.dict[key].append(None) self.serialStatus = True except Exception,e: #if the com port is wrong dont start serial print str(e) self.textboxvar.set("Error starting serial on port " + self.selected_s_Port.get() + ": " + str(e)) else:
class fileExplorer(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent #Determines which checkbox is active. self.option = 0 #Setup window. self.parent.title("REA5PE") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) #Create label lbl = Label(self, text="Select the format PE file.") lbl.grid(sticky=W) #Create checkbox 1 self.var = IntVar() cb = Checkbutton(self, text="Show .txt", variable=self.var, command=self.onClick) cb.grid(row=1, column=0, sticky=W) #Create checkbox 2 self.var2 = IntVar() cb2 = Checkbutton(self, text="Show Console", variable=self.var2, command=self.onClick2) cb2.grid(row=2, column=0, sticky=W) #Entry form self.e1 = Entry(self) self.e1.grid(row=3, column=0) self.e1.focus_set() #Currently owns focus #Submission abtn = Button(self, text="Disassemble", command=self.onClickDisassemble) abtn.grid(row=4, column=0, sticky=W+E) #checkbox1 def onClick(self): if self.var.get() == 1: self.option+=1 else: self.option-=1 #checkbox2 def onClick2(self): if self.var2.get() == 1: self.option+=2 else: self.option-=2 #Disassemble button def onClickDisassemble(self): #Grab the string from the entry field. print "Attempting to launch file: " + self.e1.get() decoded = self.e1.get() if(os.path.isfile(self.e1.get())==True): #Launch the process. process = Popen(["xed.exe", "-i", decoded], stdout=PIPE) (output, err) = process.communicate() exit_code = process.wait() else: print "File does not exist. Terminating application." sys.exit() #Save to file. print "Saving to file...." fx = open('xeddumptext.txt', 'w') fx.write(output) fx.close() fb = open('xeddumpbinary.txt', 'wb') fb.write(output) fb.close() print "done" if(self.option==0): print "No selection. Please choose a section." elif(self.option==1): print "Displaying text section only." self.extractText(); elif(self.option==2): print "Displaying Console section only." self.extractConsole(); elif(self.option==3): print "Displaying both sections." self.extractText(); self.extractConsole(); else: print "Unknown error." def extractText(self): # create child window win = Toplevel() # display message message = "Assembly Dump for .text section" Label(win, text=message).pack() self.scrollbar = Scrollbar(win) self.scrollbar.pack(side=RIGHT, fill=Y) self.T = Text(win, height=20, width=100) self.T.pack() self.scrollbar.config(command=self.T.yview) #Fill out the window with the data. with open("xeddumpbinary.txt") as input_data: for line in input_data: if line.strip() == '# IA32 format': break #Reads text until the end of the block. for line in input_data: #keep reading if line.strip() == '# end of text section.': break self.T.insert(END, line) message2 = "Search:" Label(win,text=message2).pack() self.es = Entry(win) self.es.pack() self.es.focus_set() Button(win, text='OK', command=self.searchTerm).pack() def searchTerm(self): self.T.tag_remove('search', '1.0', END) s = self.es.get() if s: idx = '1.0' while 1: idx = self.T.search(s, idx, nocase=1, stopindex=END) if not idx: break lastidx = '%s+%dc' % (idx, len(s)) self.T.tag_add('search', idx, lastidx) idx = lastidx self.T.tag_config("search", foreground="red") self.es.focus_set() def extractConsole(self): # create child window win2 = Toplevel() # display message message = "Dump for Console" Label(win2, text=message).pack() self.scrollbarc = Scrollbar(win2) self.scrollbarc.pack(side=RIGHT, fill=Y) self.T2 = Text(win2, height=20, width=100, yscrollcommand=self.scrollbarc.set) self.T2.pack() self.scrollbarc.config(command=self.T2.yview) # quit child window and return to root window # the button is optional here, simply use the corner x of the child window with open('xeddumpbinary.txt') as input_datac: for line in input_datac: if line.strip() == '# end of text section.': break #Reads text until the end of the block. for line in input_datac: #keep reading self.T2.insert(END, line) Button(win2, text='OK', command=win2.destroy).pack()
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.date = (time.strftime("%m_%d_%Y")) self.initUI() def initUI(self): self.parent.title("Experiment") self.pack(fill=BOTH, expand=True) self.frame1 = Frame(self) self.frame1.pack(fill=X) self.lbl1 = Label(self.frame1, text="Participant", width=10) self.lbl1.pack(side=LEFT, padx=5, pady=5) self.entry1 = Entry(self.frame1) self.entry1.pack(fill=X, padx=5, expand=True) self.frame2 = Frame(self) self.frame2.pack(fill=X) self.lbl2 = Label(self.frame2, text="Date", width=10) self.lbl2.pack(side=LEFT, padx=5, pady=5) self.entry2 = Entry(self.frame2) self.entry2.insert(0, self.date) self.entry2.state() self.entry2.pack(fill=X, padx=5, expand=True) self.frame3 = Frame(self) self.frame3.pack(fill=X) self.lbl3 = Label(self.frame3, text="COM Port", width=10) self.lbl3.pack(side=LEFT, padx=5, pady=5) self.entry3 = Entry(self.frame3) self.entry3.pack(fill=X, padx=5, expand=True) self.frame4 = Frame(self) self.frame4.pack(fill=X) self.accept = Button(self.frame4, text="Ok", command=self.makeVariables) self.accept.pack(fill=X, padx=5) def makeVariables(self): self.participant = self.entry1.get() self.port = self.entry3.get() self.verify() Frame.quit(self) def verify(self): mbox.showwarning('Check', 'Have you set the markers on Emotiv Toolbox?') def getName(self): return self.participant def getDate(self): return self.date def get_port(self): return self.port
class Test_Wifi(tk.Frame): _title = "Wifi Demo" def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller label = tk.Label(self, text=self._title, font=TITLE_FONT) label.pack(side="top", fill="x", pady=10) frame_ssid = tk.Frame(self) frame_ssid.pack(fill=tk.X) lbl_ssid = tk.Label(frame_ssid, text="ssid", width=6) lbl_ssid.pack(side=tk.LEFT, padx=5, pady=5) self.entry_ssid = Entry(frame_ssid) self.entry_ssid.pack(fill=tk.X, padx=5, expand=True) frame_password = tk.Frame(self) frame_password.pack(fill=tk.X) lbl_password = tk.Label(frame_password, text="password", width=6) lbl_password.pack(side=tk.LEFT, padx=5, pady=5) self.entry_password = Entry(frame_password) self.entry_password.pack(fill=tk.X, padx=5, expand=True) frame_url = tk.Frame(self) frame_url.pack(fill=tk.X) lbl_url = tk.Label(frame_url, text="url", width=6) lbl_url.pack(side=tk.LEFT, padx=5, pady=5) self.entry_url = Entry(frame_url) self.entry_url.insert(tk.END, 'google.com') self.entry_url.pack(fill=tk.X, padx=5, expand=True) btn_exit = tk.Button(self, text="Back", command=self.OnClose) btn_exit.pack(side=tk.RIGHT, padx=5, pady=5) self.btn_test = tk.Button(self, text="Run", command=self.WifiTest) self.btn_test.pack(side=tk.RIGHT, padx=5, pady=5) def OnClose(self): self.btn_test.config(state=tk.NORMAL) self.controller.show_frame("StartPage") def WifiTest(self): if self.entry_ssid.get() == "": mbox.showerror("Error", "ssid should not be blank") return if self.entry_password.get() == "": mbox.showerror("Error", "password should not be blank") return if self.entry_url.get() == "": mbox.showerror("Error", "url should not be blank") return App_Argument = "" if ENABLE_ARGUMENT == True: App_Argument += " -t wifi -s " + self.entry_ssid.get() + \ " -p " + self.entry_password.get() + \ " -l " + self.entry_url.get() else: App_Argument = LED_WIFI print RUN_SCRIPT + WIFI_TEST_APP + App_Argument if ssh_session.CreateSshSession(RUN_SCRIPT + WIFI_TEST_APP + App_Argument, WIFI_TEST_APP) != 0: return self.OnClose() self.btn_test.config(state=tk.DISABLED)
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Review") self.pack(fill=BOTH, expand=True) labelfont20 = ('Roboto', 20, 'bold') labelfont12 = ('Roboto', 12, 'bold') frame0 = Frame(self) frame0.pack() lbl0 = Label(frame0, text="Hi USER") lbl0.config(font=labelfont20) lbl0.pack(padx=5, pady=5) lbl00 = Label(frame0, text="Search here") lbl00.config(font=labelfont12) lbl00.pack(padx=5, pady=5) frame1 = Frame(self) frame1.pack() lbl1 = Label(frame1, text="min %", width=9) lbl1.pack(side=LEFT, padx=7, pady=5) self.entry1 = Entry(frame1, width=20) self.entry1.pack(padx=5, expand=True) frame6 = Frame(self) frame6.pack() closeButton = Button(frame6, text="Get Names", width=12, command=self.getDate) closeButton.pack(padx=5, pady=5) frame7 = Frame(self) frame7.pack() closeButton1 = Button(frame7, text="Open in excel", width=15, command=self.openDate) closeButton1.pack(padx=5, pady=5) frame000 = Frame(self) frame000.pack() self.lbl000 = Label(frame000, text=" ") self.lbl000.config(font=labelfont12) self.lbl000.pack(padx=5, pady=5) frame00a = Frame(self) frame00a.pack() self.lbl00a = Label(frame000, text=" ") self.lbl00a.pack(padx=5, pady=5) def getDate(self): x1 = self.entry1.get() nx = "" self.entry1.delete(0, 'end') self.lbl000.config(text="Names Are:") #read csv, and split on "," the line csv_file = csv.reader(open('test.csv', "rb"), delimiter=",") #loop through csv list for row in csv_file: if row[2] >= x1: nx += str(row[0] + ", ") with open("output5.csv", "ab") as fp: wr = csv.writer(fp, dialect='excel') wr.writerow(row) fp.close() self.lbl00a.config(text=nx) def openDate(self): os.system("start " + 'output5.csv')
class Example(Frame): #Initialise values start_time=time.time() para_toggle=0 grass_toggle=1 string_toggle=0 divide_toggle=0 ctrl_toggle=0 ctrlpt1=[85,55] ctrlpt1x=ctrlpt1[0] ctrlpt2=[150,180] ctrlpt3=[105,255] div_num = 8 #initilise Frame then initialise this Example class using initUI() def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Grass") #Configure parent for column layout Style().configure("TButton", padding=(0, 5, 0, 5), font='serif 10') self.columnconfigure(0, pad=3) self.columnconfigure(1, pad=3) self.columnconfigure(2, pad=3) self.columnconfigure(3, pad=3) self.rowconfigure(0, pad=3) self.rowconfigure(1, pad=3) self.rowconfigure(2, pad=3) self.rowconfigure(3, pad=3) self.rowconfigure(4, pad=3) self.rowconfigure(5, pad=3) self.rowconfigure(6, pad=3) #Buttons and stuff frame1 = Frame(self) frame1.grid(row=0,columnspan=4) self.lbl1 = Label(frame1, text="") self.lbl1.pack(side=LEFT, padx=5, pady=5) frame2 = Frame(self) frame2.grid(row=1,columnspan=4) lbl2 = Label(frame2, text="Divisions", width=6) lbl2.pack(side=LEFT, padx=5, pady=5) self.entry1=Entry(frame2) self.entry1.pack(fill=X, padx=5, expand=True) frame3 = Frame(self) frame3.grid(row=2,columnspan=4) self.lbl3 = Label(frame3, text="Divisions =%r"%self.div_num) self.lbl3.pack(side=LEFT, expand=True) set_point = Button(self, text="Set divisions", command=self.get_div) set_point.grid(row=3, column=0) show_ctrl_points = Button( self, text="Control points", command=self.toggle_ctrl ) show_ctrl_points.grid(row=3, column=2) div = Button(self, text="Divide", command=self.toggle_divide) div.grid(row = 5, column = 0,columnspan=2) strart = Button(self, text="Strings", command=self.toggle_string) strart.grid(row = 5, column = 2,columnspan=2) plotpar = Button(self, text="Parabola", command=self.toggle_para) plotpar.grid(row = 6, column = 0,columnspan=2) grass = Button(self, text="Grass", command=self.toggle_grass) grass.grid(row = 6, column = 2,columnspan=2) self.w = Canvas(self, width=200, height=900) self.w.grid(row=7, columnspan=4) self.after(70,self.draw) self.pack() #Draw initial control points for user #Various toggles to show/remove parts of the model def toggle_ctrl(self): self.ctrl_toggle=(self.ctrl_toggle+1)%2 def toggle_para(self): self.para_toggle=(self.para_toggle+1)%2 def toggle_grass(self): self.grass_toggle=(self.grass_toggle+1)%2 def toggle_string(self): self.string_toggle=(self.string_toggle+1)%2 def toggle_divide(self): self.divide_toggle=(self.divide_toggle+1)%2 #Main function that draws the grass then reinitialises the after method on the Frame def draw(self): newx=self.ctrlpt1x+50*math.sin(3.14*0.5*(self.start_time-time.time())) self.ctrlpt1=[newx,55] self.w.delete("all") if self.grass_toggle==1: self.grass_polygon() self.w.create_polygon(0,235,400,235,400,400,0,400,fill='#A74A2A') if self.divide_toggle==1: self.draw_divide() if self.string_toggle==1: self.string_art() if self.para_toggle==1: self.plot_para() if self.ctrl_toggle==1: self.w.create_oval( self.ctrlpt1[0] - 2, self.ctrlpt1[1] - 2, self.ctrlpt1[0] + 2, self.ctrlpt1[1] + 2, fill="black" ) self.w.create_oval( self.ctrlpt2[0] - 2, self.ctrlpt2[1] - 2, self.ctrlpt2[0] + 2, self.ctrlpt2[1] + 2, fill="black" ) self.w.create_oval( self.ctrlpt3[0] - 2, self.ctrlpt3[1] - 2, self.ctrlpt3[0] + 2, self.ctrlpt3[1] + 2, fill="black" ) self.after(70,self.draw) #Gets the number of divisions from the label and then sets it def get_div(self): try: self.div_num=int(self.entry1.get()) self.lbl1.config(text="Division number set") self.lbl3.config(text="Divisions =%r"%self.div_num) except ValueError: self.lbl1.config(text="Incorrect entry type") #Draws the positions of each division def draw_divide(self): list1=self.divide_line(self.ctrlpt1,self.ctrlpt2) for n in range(len(list1)): self.w.create_oval( list1[n][0] - 2, list1[n][1] - 2, list1[n][0] + 2,list1[n][1] + 2,fill="black" ) list2=self.divide_line(self.ctrlpt2,self.ctrlpt3) for n in range(len(list2)): self.w.create_oval( list2[n][0] - 2, list2[n][1] - 2, list2[n][0] + 2,list2[n][1] + 2,fill="black" ) #Draws the polygons for each section of the grass (Clean up function) def grass_polygon(self): lst=self.intersect_list() pluslst2=[0]*(2*(len(lst)-1)-1) minuslst2=[0]*(2*(len(lst)-1)-1) pluslst2[0:1]=lst[0][1],lst[0][0] minuslst2[0:1]=lst[0] try: for n in range(1,len(lst)-1): width=2+10*(1-abs(1-2*(n+2)/float(len(lst)))) m1 = self.slope(lst[n],lst[n+1]) m = -1/m1 dx = math.sqrt(width**2/(1+m**2)) dy = math.sqrt(width**2/(1+1/m**2)) minuslst2[2*n]=math.ceil(lst[n][0]-dx) minuslst2[2*n+1]=math.ceil(lst[n][1]-dy) pluslst2[2*n+1]=math.ceil(lst[n][0]+dx) pluslst2[2*n]=math.ceil(lst[n][1]+dy) pluslst2.reverse() self.w.create_polygon(minuslst2,pluslst2,fill='green') except TypeError: self.lbl1.config(text="Slope error") #Standard slope function (Convert to matrix form maybe? also fix the perp line case) def slope(self,point1,point2): x1,y1 = point1 x2,y2 = point2 if abs(x2-x1) > 0.00001: m1=(y2+y1)/float(x2-x1) return m1 else: return 'slope_error' #Gets all the intersection points needed for the parabola def intersect_list(self): list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2) list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3) zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)]) para_list=[0]*(len(zplst)+1) para_list[0]=self.ctrlpt1 para_list[len(zplst)]=self.ctrlpt3 for n in range(len(zplst)-1): para_list[n+1]=self.intersection( zplst[n][0],zplst[n][1], zplst[n+1][0],zplst[n+1][1] ) return para_list #Draws the parabola points def plot_para(self): plotlist=self.intersect_list() for n in range(len(plotlist)): self.w.create_oval( plotlist[n][0]-2, plotlist[n][1]-2, plotlist[n][0]+2, plotlist[n][1]+2,fill="black" ) #Draws the strings def string_art(self): list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2) list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3) zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)]) for n in range(len(zplst)): self.w.create_line( zplst[n][0][0], zplst[n][0][1], zplst[n][1][0], zplst[n][1][1],fill="black" ) #Given four points which define two lines it finds the intersection point of the two lines. (Use matrix form) def intersection(self,point1,point2,point3,point4): x1,y1 = point1 x2,y2 = point2 x3,y3 = point3 x4,y4 = point4 if abs(x2-x1) > 0.00001 and abs(x4-x3) > 0.00001: m1=(y2-y1)/float(x2-x1) c1=y1-float(m1)*x1 m2=(y4-y3)/float(x4-x3) c2=y3-float(m2)*x3 xint = (c2-c1)/float((m1-m2)) yint = m1*((c2-c1)/float((m1-m2)))+c1 else: if abs(x2-x1) < 0.00001: xint=x2 yint=(y4-y3)*x2/float(x4-x3)+y3-float((y4-y3)/float(x4-x3))*x3 else: xint=x3 return [xint,yint] #Finds the points which divide a line defined by two points in to div_num sections def divide_line(self,point1,point2): x1,y1 = point1 x2,y2 = point2 list = [0]*(self.div_num+1) for n in range(self.div_num+1): list[n]=[x1+(n)*(x2-x1)/float(self.div_num),y1+(n)*(y2-y1)/float(self.div_num)] return list #Clears the canvas def clear_canvas(self): self.w.delete("all")
class topFrame(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.setUI() def setUI(self): self.parent.title("ServoGui") self.pack(fill=BOTH, expand=1) self.comPort = StringVar(self) self.laststrm = StringVar(self) settingFrame = Frame(self, borderwidth=1, relief=RAISED) settingFrame.pack(fill=Y, side=LEFT) Label(settingFrame, width=50, text="Port Settings", bg="green", fg="black").pack(fill=X) ports = self.getComPorts() w = apply(OptionMenu, (settingFrame, self.comPort) + tuple(ports)) w.pack(fill=X) BaudFrame = Frame(settingFrame) BaudFrame.pack(fill=X) Label(BaudFrame, text="Baud:").pack(side=LEFT) self.baud_entry = Entry(BaudFrame, width=15, validate="focusout", validatecommand=self.baudValidate) self.baud_entry.pack(side=LEFT, expand=True) self.baud_entry.insert(0, "115200") Button(settingFrame, text="Open Port", command=self.openPort).pack(fill=X) Button(settingFrame, text="Close Port", command=self.closePort).pack(fill=X) StreamFrame = Frame(settingFrame) StreamFrame.pack() self.btnStartStream = Button(StreamFrame, text="Start Stream", command=self.startStream, state=DISABLED) self.btnStopStream = Button(StreamFrame, text="Stop Stream", command=self.stopStream, state=DISABLED) self.btnGetConfig = Button(StreamFrame, text="Get Config", command=self.getConfig, state=DISABLED) self.btnStartStream.pack(side=LEFT) self.btnStopStream.pack(side=LEFT) self.btnGetConfig.pack(side=LEFT) self.queue = Queue.Queue() self.writequeue = Queue.Queue() Label(settingFrame, width=50, text="Drive Settings", bg="green", fg="black").pack(fill=X) DriveSettingsFrame = Frame(settingFrame, relief=SUNKEN) DriveSettingsFrame.pack(fill=X) driveSettingsFrames = [] self.driveSettingsEntries = [] for drivesetting in drivesettings: driveSettingsFrames.append(Frame(DriveSettingsFrame)) driveSettingsFrames[-1].pack(fill=X) Label(driveSettingsFrames[-1], text=drivesetting).pack(side=LEFT) self.driveSettingsEntries.append(Entry(driveSettingsFrames[-1])) self.driveSettingsEntries[-1].pack(side=RIGHT) Button(DriveSettingsFrame, text="Send to drive", command=self.sendConfig).pack(fill=X) Button(DriveSettingsFrame, text="Save config in drive", command=self.saveConfig).pack(fill=X) Label(settingFrame, width=50, textvariable=self.laststrm, bg="green", fg="black").pack(fill=X) #MatplotLib stuff f = Figure(figsize=(5, 4), dpi=100) self.a = f.add_subplot(311) self.a.set_title("Requested and actual position") self.b = f.add_subplot(312) self.b.set_title("Error") self.c = f.add_subplot(313) self.c.set_title("Current meas ADC value") self.canvas = FigureCanvasTkAgg(f, master=self) self.canvas.show() self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1) toolbar = NavigationToolbar2TkAgg(self.canvas, self) toolbar.update() self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1) self.hall = [] self.encoder_count = [] self.pos_error = [] self.requested_position = [] self.requested_delta = [] self.adc_value = [] self.pid_output = [] self.a.set_autoscaley_on(True) self.encoder_line, = self.a.plot([], []) self.error_line, = self.b.plot([], []) self.reqpos_line, = self.a.plot([], []) self.ADC_line, = self.c.plot([], []) self.updateCanvas() def baudValidate(self): sVal = self.baud_entry.get() try: iVal = int(sVal) except ValueError: print "Illegal baud value" self.baud_entry.delete(0, END) self.baud_entry.insert(0, "115200") return False return True def openPort(self): try: self.ser = serial.Serial(self.comPort.get(), int(self.baud_entry.get()), timeout=0) except serial.SerialException: print "unable to open" return self.btnStartStream['state'] = NORMAL self.btnStopStream['state'] = NORMAL self.btnGetConfig['state'] = NORMAL self.thread = SerialThread(self.queue, self.writequeue, self.ser) self.thread.daemon = True self.thread.start() self.process_serial() def closePort(self): self.thread.stop() self.thread.join() self.ser.closePort() self.btnStartStream['state'] = DISABLED self.btnStopStream['state'] = DISABLED self.btnGetConfig['state'] = DISABLED def process_serial(self): while self.queue.qsize(): try: line = self.queue.get() self.handleLine(line) except Queue.Empty: pass self.after(100, self.process_serial) def startStream(self): self.writequeue.put(b"STREAM START \r") def stopStream(self): self.writequeue.put(b"STREAM DIE \r") def getConfig(self): self.writequeue.put(b"GET\r") def saveConfig(self): self.writequeue.put(b"SAVE \r") def sendConfig(self): for setting in drivesettings: dataToSend = b"SET " + setting + " " + self.driveSettingsEntries[ drivesettings.index(setting)].get() + "\r" print dataToSend self.writequeue.put(dataToSend) time.sleep(0.2) def getComPorts(self): ports = serial.tools.list_ports.comports() portNames = [] for port in ports: portNames.append(port[0]) return portNames def handleLine(self, line): line = line.replace(" ", "") line = line.replace("/n", "") line = line.replace("/r", "") parts = line.split(":") if len(parts) > 1: if parts[0] == "STR": self.handleStr(parts[1]) return if parts[0] in drivesettings: self.driveSettingsEntries[drivesettings.index( parts[0])].delete(0, END) self.driveSettingsEntries[drivesettings.index( parts[0])].insert(0, parts[1]) def handleStr(self, strm): #format of the stream line: STR:hall;count;requestedPosition;requestedDelta;error parts = strm.split(";") self.laststrm.set(strm) self.hall.append(int(parts[0])) if len(self.hall) > 5000: self.hall.pop(0) self.encoder_count.append(parts[1]) if len(self.encoder_count) > 5000: self.encoder_count.pop(0) self.requested_position.append(parts[2]) if len(self.requested_position) > 5000: self.requested_position.pop(0) self.requested_delta.append(parts[3]) if len(self.requested_delta) > 5000: self.requested_delta.pop(0) self.pos_error.append(parts[4]) if len(self.pos_error) > 5000: self.pos_error.pop(0) self.adc_value.append(parts[5]) if len(self.adc_value) > 5000: self.adc_value.pop(0) self.pid_output.append(parts[5]) if len(self.pid_output) > 5000: self.pid_output.pop(0) def updateCanvas(self): self.encoder_line.set_xdata(range(len(self.encoder_count))) self.encoder_line.set_ydata(self.encoder_count) self.error_line.set_xdata(range(len(self.pos_error))) self.error_line.set_ydata(self.pos_error) self.reqpos_line.set_xdata(range(len(self.requested_position))) self.reqpos_line.set_ydata(self.requested_position) self.ADC_line.set_xdata(range(len(self.adc_value))) self.ADC_line.set_ydata(self.adc_value) self.a.relim() self.a.autoscale_view() self.b.relim() self.b.autoscale_view() self.c.relim() self.c.autoscale_view() self.canvas.draw() self.after(100, self.updateCanvas)
class MainWindow(Tk): def __init__(self): Tk.__init__(self) self.title(mainWindowTitle) self.resizable(width=0, height=0) self.__setStyles() self.__initializeComponents() self.__dataController = DataController(); self.mainloop() def __initializeComponents(self): self.imageCanvas = Canvas(master=self, width=imageCanvasWidth, height=windowElementsHeight, bg="white") self.imageCanvas.pack(side=LEFT, padx=(windowPadding, 0), pady=windowPadding, fill=BOTH) self.buttonsFrame = Frame(master=self, width=buttonsFrameWidth, height=windowElementsHeight) self.buttonsFrame.propagate(0) self.loadFileButton = Button(master=self.buttonsFrame, text=loadFileButtonText, command=self.loadFileButtonClick) self.loadFileButton.pack(fill=X, pady=buttonsPadding); self.colorByLabel = Label(self.buttonsFrame, text=colorByLabelText) self.colorByLabel.pack(fill=X) self.colorByCombobox = Combobox(self.buttonsFrame, state=DISABLED, values=colorByComboboxValues) self.colorByCombobox.set(colorByComboboxValues[0]) self.colorByCombobox.bind("<<ComboboxSelected>>", self.__colorByComboboxChange) self.colorByCombobox.pack(fill=X, pady=buttonsPadding) self.rejectedValuesPercentLabel = Label(self.buttonsFrame, text=rejectedMarginLabelText) self.rejectedValuesPercentLabel.pack(fill=X) self.rejectedValuesPercentEntry = Entry(self.buttonsFrame) self.rejectedValuesPercentEntry.insert(0, defaultRejectedValuesPercent) self.rejectedValuesPercentEntry.config(state=DISABLED) self.rejectedValuesPercentEntry.pack(fill=X, pady=buttonsPadding) self.colorsSettingsPanel = Labelframe(self.buttonsFrame, text=visualisationSettingsPanelText) self.colorsTableLengthLabel = Label(self.colorsSettingsPanel, text=colorsTableLengthLabelText) self.colorsTableLengthLabel.pack(fill=X) self.colorsTableLengthEntry = Entry(self.colorsSettingsPanel) self.colorsTableLengthEntry.insert(0, defaultColorsTableLength) self.colorsTableLengthEntry.config(state=DISABLED) self.colorsTableLengthEntry.pack(fill=X) self.scaleTypeLabel = Label(self.colorsSettingsPanel, text=scaleTypeLabelText) self.scaleTypeLabel.pack(fill=X) self.scaleTypeCombobox = Combobox(self.colorsSettingsPanel, state=DISABLED, values=scaleTypesComboboxValues) self.scaleTypeCombobox.set(scaleTypesComboboxValues[0]) self.scaleTypeCombobox.bind("<<ComboboxSelected>>", self.__scaleTypeComboboxChange) self.scaleTypeCombobox.pack(fill=X) self.colorsTableMinLabel = Label(self.colorsSettingsPanel, text=colorsTableMinLabelText) self.colorsTableMinLabel.pack(fill=X) self.colorsTableMinEntry = Entry(self.colorsSettingsPanel) self.colorsTableMinEntry.insert(0, defaultColorsTableMin) self.colorsTableMinEntry.config(state=DISABLED) self.colorsTableMinEntry.pack(fill=X) self.colorsTableMaxLabel = Label(self.colorsSettingsPanel, text=colorsTableMaxLabelText) self.colorsTableMaxLabel.pack(fill=X) self.colorsTableMaxEntry = Entry(self.colorsSettingsPanel) self.colorsTableMaxEntry.insert(0, defaultColorsTableMax) self.colorsTableMaxEntry.config(state=DISABLED) self.colorsTableMaxEntry.pack(fill=X) self.colorsSettingsPanel.pack(fill=X, pady=buttonsPadding) self.redrawButton = Button(master=self.buttonsFrame, text=redrawButtonText, state=DISABLED, command=self.__redrawButtonClick) self.redrawButton.pack(fill=X, pady=buttonsPadding) self.buttonsFrame.pack(side=RIGHT, padx=windowPadding, pady=windowPadding, fill=BOTH) def __setStyles(self): Style().configure("TButton", padding=buttonsTextPadding, font=buttonsFont) def loadFileButtonClick(self): fileName = tkFileDialog.askopenfilename(filetypes=[('Tablet files', '*.mtb'), ('Tablet files', '*.htd')]) if (fileName): if (not self.__getInputParams()): self.__showInvalidInputMessage() return self.lastFileName = fileName; self.title(mainWindowTitle + " " + fileName) self.__draw(fileName) tkMessageBox.showinfo(measureDialogTitle, measureDialogText + str(self.__dataController.getMeasure(fileName))) self.redrawButton.config(state=NORMAL) self.colorByCombobox.config(state="readonly") self.colorsTableLengthEntry.config(state=NORMAL) self.scaleTypeCombobox.config(state="readonly") def __redrawButtonClick(self): if (not self.__getInputParams()): self.__showInvalidInputMessage() return self.__draw(self.lastFileName) def __scaleTypeComboboxChange(self, event): if (self.scaleTypeCombobox.get() == relativeScaleType): self.colorsTableMinEntry.config(state=DISABLED) self.colorsTableMaxEntry.config(state=DISABLED) else: self.colorsTableMinEntry.config(state=NORMAL) self.colorsTableMaxEntry.config(state=NORMAL) def __colorByComboboxChange(self, event): if (self.colorByCombobox.get() == colorByNoneOption): self.rejectedValuesPercentEntry.config(state=DISABLED) else: self.rejectedValuesPercentEntry.config(state=NORMAL) def __draw(self, fileName): self.imageCanvas.delete(ALL) dataForDrawing = self.__dataController.getDataForDrawing( fileName, self.colorByCombobox.get(), self.colorsTableLength, self.scaleTypeCombobox.get(), self.colorsTableMinValue, self.colorsTableMaxValue, self.rejectedValuesPercent) for package in dataForDrawing: x = package[0]; y = package[1]; color = package[2]; self.imageCanvas.create_line(x, y, x + 1, y + 1, fill=color) def __drawColorBySpeed(self, dataPackages, minX, minY, ratio, hsv): allSpeeds = self.__getAllSpeeds(dataPackages) minSpeed = min(allSpeeds) maxSpeed = max(allSpeeds) if (self.scaleTypeCombobox.get() == relativeScaleType): colorsTableMinValue = minSpeed colorsTableMaxValue = maxSpeed else: colorsTableMinValue = self.colorsTableMinValue colorsTableMaxValue = self.colorsTableMaxValue i = 0 for package in dataPackages: x = (package[dataXNumber] - minX) * ratio y = (package[dataYNumber] - minY) * ratio color = hsv.getColorByValue(colorsTableMinValue, colorsTableMaxValue, allSpeeds[i]) tk_rgb = "#%02x%02x%02x" % color self.imageCanvas.create_line(x, y, x + 1, y + 1, fill=tk_rgb) i += 1 def __showInvalidInputMessage(self): tkMessageBox.showinfo(invalidInputMessageTitle, invalidInputMessageText) def __getInputParams(self): try: self.colorsTableLength = int(self.colorsTableLengthEntry.get()) self.colorsTableMinValue = float(self.colorsTableMinEntry.get()) self.colorsTableMaxValue = float(self.colorsTableMaxEntry.get()) self.rejectedValuesPercent = float(self.rejectedValuesPercentEntry.get()) if (self.colorsTableLength < 1 or self.colorsTableMinValue >= self.colorsTableMaxValue or self.rejectedValuesPercent < 0 or self.rejectedValuesPercent >= 100): raise return True except: return False
return self.pages[self.tab(self.index('end') - 1)['text']] if __name__ == '__main__': from Tkinter import Tk from Tkconstants import TOP, BOTH from ttk import Label, Entry, Button, Style # test dialog root = Tk() style = Style() style.configure('C.TLabel', padding=20) tabPage = TabbedPageSet(root, page_names=['Foobar', 'Baz']) tabPage.pack(side=TOP, expand=True, fill=BOTH) Label(tabPage.pages['Foobar'].frame, text='Foo', style='C.TLabel').pack() Label(tabPage.pages['Foobar'].frame, text='Bar', style='C.TLabel').pack() Label(tabPage.pages['Baz'].frame, text='Baz').pack() entryPgName = Entry(root) buttonAdd = Button(root, text='Add Page', command=lambda: tabPage.add_page(entryPgName.get())) buttonRemove = Button( root, text='Remove Page', command=lambda: tabPage.remove_page(entryPgName.get())) labelPgName = Label(root, text='name of page to add/remove:') buttonAdd.pack(padx=5, pady=5) buttonRemove.pack(padx=5, pady=5) labelPgName.pack(padx=5) entryPgName.pack(padx=5) root.mainloop()
def initUI(self): self.parent.title("Review") self.pack(fill=BOTH, expand=True) ## Frame 0 - Solo descrizione frame0 = Frame(self) frame0.pack(fill=X) descrizione = Label( frame0, text="Compilare tutti i campi e poi salvare per inserire una nuova riga nel file delle domande", width=100, ) descrizione.pack(side=LEFT, padx=5, pady=5) ### Frame 1 frame1 = Frame(self) frame1.pack(fill=X) domanda = Label(frame1, text="Domanda", width=20) domanda.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1) entry1.pack(fill=X, padx=5, expand=True) ### Frame 2 frame2 = Frame(self) frame2.pack(fill=X) risposta1 = Label(frame2, text="Risposta 1 - ERRATA", width=20) risposta1.pack(side=LEFT, padx=5, pady=5) entry2 = Entry(frame2) entry2.pack(fill=X, padx=5, expand=False) ### Frame 3 frame3 = Frame(self) frame3.pack(fill=X) risposta2 = Label(frame3, text="Risposta 2 - ERRATA", width=20) risposta2.pack(side=LEFT, padx=5, pady=5) entry3 = Entry(frame3) entry3.pack(fill=X, padx=5, expand=True) ### Frame 4 frame4 = Frame(self) frame4.pack(fill=X) risposta_giusta = Label(frame4, text="Risposta CORRETTA", width=20) risposta_giusta.pack(side=LEFT, padx=5, pady=5) entry4 = Entry(frame4) entry4.pack(fill=X, padx=5, expand=True) ### Frame 6 frame6 = Frame(self) frame6.pack(fill=BOTH, expand=True) # Close button -> close on click closeButton = Button(self, text="Chiudi", command=self.master.quit) closeButton.pack(side=RIGHT, padx=5, pady=5) # Save button -> save a new line in the file and continues the exec okButton = Button( self, text="Salva", command=lambda: self.valueGET(entry1.get(), entry2.get(), entry3.get(), entry4.get()) ) okButton.pack(side=RIGHT)
def initUI(self): self.parent.title("Emammal Legacy Data Converter") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=True) self.root_directory = StringVar(self.parent) self.output_directory = StringVar(self.parent) self.results = StringVar() self.radio_type = IntVar() self.radio_type = 0 frame1 = Frame(self) frame1.pack(fill=X) lbl1 = Label(frame1, text="Input Directory", width=15) lbl1.pack(side=LEFT, padx=5, pady=5) select_dir = Button(frame1, text='Choose Directory', command=self.input_askdirectory) select_dir.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1,textvariable= self.root_directory) entry1.pack(fill=X, padx=5, expand=True) frame2 = Frame(self) frame2.pack(fill=X) lbl2 = Label(frame2, text="Output Directory", width=15) lbl2.pack(side=LEFT, padx=5, pady=5) output_dir = Button(frame2, text='Choose Directory', command=self.output_askdirectory) output_dir.pack(side=LEFT, padx=5, pady=5) entry2 = Entry(frame2, textvariable= self.output_directory) entry2.pack(fill=X, padx=5, expand=True) frameRadio = Frame(self) frameRadio.pack(fill=X) lbl2 = Label(frameRadio, text="Manifest Type", width=15) lbl2.pack(side=LEFT, padx=5, pady=5) radio_emammal = Radiobutton(frameRadio, text="eMammal xmlVerifier-1.0.2", variable=self.radio_type, value=1,command=self.update_type_value) radio_emammal.pack(side=LEFT, padx=5, pady=5) radio_classic = Radiobutton(frameRadio, text="WSC eMammal Classic", variable=self.radio_type,value=0,command=self.update_type_value) radio_classic.pack(side=LEFT, padx=5, pady=5) radio_classic.select() frame3 = Frame(self) frame3.pack(fill=BOTH, expand=True) lbl3 = Label(frame3, text="Results", width=15) lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5) self.results = Text(frame3) self.results.pack(fill=BOTH, pady=5, padx=5, expand=True) closeButton = Button(self, text="Close",command=self.quit) closeButton.pack(side=RIGHT, padx=5, pady=5) okButton = Button(self, text="Run",command=self.run_process) okButton.pack(side=RIGHT)
def init_ui(cls, self): """ Init the UI, creating all the frames """ self.parent.title("Review") self.pack(fill=BOTH, expand=True) ## Frame 0 - Description Only frame0 = Frame(self) frame0.pack(fill=X) descrizione = Label(frame0, text="Compilare tutti i campi e poi " \ "salvare per inserire una nuova riga nel file", width=100) descrizione.pack(side=LEFT, padx=5, pady=5) ### Frame 1 frame1 = Frame(self) frame1.pack(fill=X) domanda = Label(frame1, text="Domanda", width=20) domanda.pack(side=LEFT, padx=5, pady=5) entry1 = Entry(frame1) entry1.pack(fill=X, padx=5, expand=True) ### Frame 2 frame2 = Frame(self) frame2.pack(fill=X) risposta1 = Label(frame2, text="Risposta 1 - ERRATA", width=20) risposta1.pack(side=LEFT, padx=5, pady=5) entry2 = Entry(frame2) entry2.pack(fill=X, padx=5, expand=False) ### Frame 3 frame3 = Frame(self) frame3.pack(fill=X) risposta2 = Label(frame3, text="Risposta 2 - ERRATA", width=20) risposta2.pack(side=LEFT, padx=5, pady=5) entry3 = Entry(frame3) entry3.pack(fill=X, padx=5, expand=True) ### Frame 4 frame4 = Frame(self) frame4.pack(fill=X) risposta_giusta = Label(frame4, text="Risposta CORRETTA", width=20) risposta_giusta.pack(side=LEFT, padx=5, pady=5) entry4 = Entry(frame4) entry4.pack(fill=X, padx=5, expand=True) ### Frame 6 frame6 = Frame(self) frame6.pack(fill=BOTH, expand=True) # Close button -> close on click close_button = Button(self, text="Chiudi", command=self.master.quit) close_button.pack(side=RIGHT, padx=5, pady=5) # Save button -> save a new line in the file and continues the exec ok_button = Button(self, text="Salva", command=lambda: self.value_get(self, \ Question(entry1.get(), entry2.get(), \ entry3.get(), entry4.get()))) ok_button.pack(side=RIGHT)
class AdderApp(Frame): def __init__(self): Frame.__init__(self) self.master.title("Adder App") #self.master.geometry("200x150") self.instructions = Label(self, text="Enter the value to add to:") self.instructions.pack(pady=5) self.number = Entry(self) self.number.focus_set() self.number.pack(pady=5) self.total = Tkinter.StringVar() self.time = Tkinter.StringVar() self.total_frame = Frame(self) self.total_frame.pack(pady=0) Label(self.total_frame, text="Total:").pack(side=Tkinter.LEFT, padx=5) Label(self.total_frame, textvariable=self.total).pack(side=Tkinter.LEFT) self.time_frame = Frame(self) self.time_frame.pack(pady=0) Label(self.time_frame, text="Time:").pack(side=Tkinter.LEFT) Label(self.time_frame, textvariable=self.time).pack(side=Tkinter.LEFT) self.complete_msg = Tkinter.StringVar() Label(self, textvariable=self.complete_msg).pack(pady=2) self.buttons = Frame(self) self.buttons.pack(side=Tkinter.BOTTOM, pady=2) self.quit_btn = Button(self.buttons, text="Quit", command=self.quit) self.quit_btn.pack(side=Tkinter.LEFT) self.quit_btn.bind("<Return>", (lambda e, b=self.quit_btn: b.invoke())) self.run_btn = Button(self.buttons, text="Run", command=self.run, default=Tkinter.ACTIVE) self.run_btn.pack(side=Tkinter.LEFT) self.pack(fill=Tkinter.X) self.master.bind("<Return>", (lambda e, b=self.run_btn: b.invoke())) def run_btn_invoke(self, e): print("starting run with button enter") self.run_btn.invoke() def run(self): self.complete_msg.set("") self.add_run = adder.Adder() self.t = threading.Thread(target=self.add_run.run_to, args=(int(self.number.get()),)) self.t.start() self.update_status() def update_status(self): self.total.set(self.add_run.total) try: self.time.set(self.add_run.elapsed_seconds()) except Exception: pass if self.add_run.complete: self.add_run.complete = False self.complete_msg.set("Run Complete") self.quit_btn.focus_set() self.after(50, self.update_status)
class Search(Frame): """******** Funcion: __init__ ************** Descripcion: Constructor de Search Parametros: self Search parent Tk api InstagramAPI id str Retorno: void *****************************************************""" def __init__(self,parent,api,id): Frame.__init__(self, parent) self.parent = parent self.api = api self.id = id self.anySearch = False self.initUI() """******** Funcion: initUI ************** Descripcion: Crea una nueva ventana de busqueda con un text box y un boton Parametros: self Search Retorno: void *****************************************************""" def initUI(self): self.parent.title("Pythagram: Search") self.style = Style() self.style.theme_use("default") self.frame = Frame(self,relief=RAISED) self.frame.pack(fill=BOTH, expand=1) searchLabel = Label(self.frame, text="Search") self.searchEntry = Entry(self.frame) searchLabel.pack(fill=BOTH, padx=5,pady=5) self.searchEntry.pack(fill=BOTH, padx=5,pady=5) self.pack(fill=BOTH, expand=1) okButton = Button(self, text="OK", command=self.search) okButton.pack(side=RIGHT, padx=5, pady=5) """******** Funcion: search ************** Descripcion: realiza la busqueda en el servidor segun el texto ingresado en el campo de texto Parametros: self Search Retorno: void *****************************************************""" def search(self): if (self.anySearch): self.lb.pack_forget() query = self.searchEntry.get() p = { "q": query} raw = self.api.call_resource('users', 'search', params=p) data = raw['data'] self.results = [] self.lb = Listbox(self.frame, width=100) for element in data: try: self.lb.insert(END, "@{0}: {1}".format(element['username'],element['full_name'])) except: continue self.results.append(element['id']) self.lb.bind("<<ListboxSelect>>", self.onSelect) self.lb.pack(side=LEFT, padx=5, pady=5) self.pack(fill=BOTH, expand=1) self.anySearch = True """******** Funcion: onSelect ************** Descripcion: abre una nueva ventana con el perfil seleccionado en la lista de resultados Parametros: self Profile val Retorno: void *****************************************************""" def onSelect(self,val): sender = val.widget idx = sender.curselection() self.newWindow = Toplevel(self.parent) p = Profile(self.newWindow,self.api,self.results[int(idx[0])])
class Test_GPS3G(tk.Frame): _title = "GPS + 3G Demo" def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller label = tk.Label(self, text=self._title, font=TITLE_FONT) label.pack(side="top", fill="x", pady=10) frame_apn = tk.Frame(self) frame_apn.pack(fill=tk.X) lbl_apn = tk.Label(frame_apn, text="apn", width=8) lbl_apn.pack(side=tk.LEFT, padx=5, pady=5) self.entry_apn = Entry(frame_apn) self.entry_apn.insert(tk.END, 'internet') self.entry_apn.pack(fill=tk.X, padx=5, expand=True) frame_username = tk.Frame(self) frame_username.pack(fill=tk.X) lbl_username = tk.Label(frame_username, text="username", width=8) lbl_username.pack(side=tk.LEFT, padx=5, pady=5) self.entry_username = Entry(frame_username) self.entry_username.pack(fill=tk.X, padx=5, expand=True) frame_password = tk.Frame(self) frame_password.pack(fill=tk.X) lbl_password = tk.Label(frame_password, text="password", width=8) lbl_password.pack(side=tk.LEFT, padx=5, pady=5) self.entry_password = Entry(frame_password) self.entry_password.pack(fill=tk.X, padx=5, expand=True) frame_dial_number = tk.Frame(self) frame_dial_number.pack(fill=tk.X) lbl_dial_number = tk.Label(frame_dial_number, text="dial_number", width=8) lbl_dial_number.pack(side=tk.LEFT, padx=5, pady=5) self.entry_dial_number = Entry(frame_dial_number) self.entry_dial_number.insert(tk.END, '*99#') self.entry_dial_number.pack(fill=tk.X, padx=5, expand=True) btn_exit = tk.Button(self, text="Back", command=self.OnClose) btn_exit.pack(side=tk.RIGHT, padx=5, pady=5) self.btn_test = tk.Button(self, text="Run", command=self.GPS3GTest) self.btn_test.pack(side=tk.RIGHT, padx=5, pady=5) def OnClose(self): self.btn_test.config(state=tk.NORMAL) self.controller.show_frame("StartPage") def GPS3GTest(self): if self.entry_apn.get() == "": mbox.showerror("Error", "apn should not be blank") return App_Argument = "" if ENABLE_ARGUMENT == True: App_Argument += " -a " + self.entry_apn.get() + \ " -d " + self.entry_dial_number.get() if len(self.entry_username.get()) > 0: App_Argument += " -u " + self.entry_username.get() if len(self.entry_password.get()) > 0: App_Argument += " -p " + self.entry_password.get() else: App_Argument = LED_GPS3G print RUN_SCRIPT + GPS_3G_TEST_APP + App_Argument # Force eth0 down, in order to connect 3g correctly if ssh_session.CreateSshSession(RUN_SCRIPT + WIFI_DOWN, WIFI_DOWN) != 0: return self.OnClose() # Wait for eth0 has been down time.sleep(2) if ssh_session.CreateSshSession(RUN_SCRIPT + GPS_3G_TEST_APP + App_Argument, GPS_3G_TEST_APP) != 0: return self.OnClose() self.btn_test.config(state=tk.DISABLED)
def initUI(self): self.parent.title("Caritas") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) frameMenu = Frame(self) frameMenu.pack(fill="both", expand="0", side=RIGHT) labelBusqueda = LabelFrame(frameMenu, text="Busqueda") labelBusqueda.pack(fill="x",expand =1) labelVoluntarios = LabelFrame(frameMenu) labelVoluntarios.pack(fill="both",expand =0) frameTabla = Frame(self) frameTabla.pack(fill="both", expand="1", side=LEFT) labelTabla = LabelFrame(frameTabla) labelTabla.pack(fill="both", expand="1") labelBotonera = LabelFrame(frameTabla) labelTabla.pack(fill="both", expand="1") labelSelect = LabelFrame(frameTabla) labelSelect.pack(fill="both", expand="1") model = TableModel() modelSelect = TableModel() model.addColumn("nombre") model.addColumn("apellidos") model.addColumn("dni") model.addColumn("direccion") model.addColumn("correo_electronico") model.addColumn("estudio") model.addColumn("parroquial") model.addColumn("proyecto") model.addColumn("genero") model.addColumn("fecha_nacimiento") model.addColumn("telefono_1") model.addColumn("telefono_2") modelSelect.addColumn("nombre") modelSelect.addColumn("apellidos") modelSelect.addColumn("dni") modelSelect.addColumn("direccion") modelSelect.addColumn("correo_electronico") modelSelect.addColumn("estudio") modelSelect.addColumn("parroquial") modelSelect.addColumn("proyecto") modelSelect.addColumn("genero") modelSelect.addColumn("fecha_nacimiento") modelSelect.addColumn("telefono_1") modelSelect.addColumn("telefono_2") #Tabla Voluntarios self.listilla= queryAllVoluntarios() model.importDict(self.listilla) self.table = TableCanvas(labelTabla, model=model,editable=False) self.table.createTableFrame() self.table.handle_double_click(self.eventoClic) #Tabla Seleccionados self.selectTable = TableCanvas(labelSelect, model=modelSelect,editable=False) self.selectTable.createTableFrame() self.listadoSeleccionado = [] L1 = Label(labelBusqueda, text="Nombre") L1.pack() E1 = Entry(labelBusqueda) E1.pack() L2 = Label(labelBusqueda, text="Apellidos") L2.pack() E2 = Entry(labelBusqueda) E2.pack() botonArriba = Button(labelVoluntarios, text="Agregar al listado", command=lambda:self.agregarListado(self.table.getSelectedRow())) botonArriba.pack() botonAbajo = Button(labelVoluntarios, text="Quitar del listado", command=lambda:self.quitarListado(self.selectTable.getSelectedRow())) botonAbajo.pack() button = Button(labelBusqueda, text="Buscar", command=lambda: self.buscar(E1.get(),E2.get())) button.pack() button = Button(labelVoluntarios, text="Nuevo Voluntario", command=lambda:self.ventanaVoluntarios(-1)) button.pack() buttonEditar = Button(labelVoluntarios, text="Editar Voluntario", command=lambda:self.ventanaVoluntarios(self.table.getSelectedRow())) buttonEditar.pack() buttonImprimir = Button(labelVoluntarios, text="Imprimir", command=lambda:self.ventanaImprimir()) buttonImprimir.pack()
class MainFrame(Frame): TOP_FRAME_BACKGROUND_COLOR = 'gray75' w_ = 500 h_ = 400 a_ = 5. b_ = 5. pad_l = 10 def __init__(self, parent): Frame.__init__(self, parent, background='white') self.parent_ = parent # this is the main frame we are working on self.img_frame = Frame(self, background='navy') self.entry1 = None self.entry2 = None self.cb = None # self.init_ui() self.centering() # broken TV app)) # while True: self.state = 0 self.init_random_image() # time.sleep(0.05) def centering(self): pos_x = (self.parent_.winfo_screenwidth() - self.w_) / 2 pos_y = (self.parent_.winfo_screenheight() - self.h_) / 2 self.parent_.geometry('{}x{}+{}+{}'.format(self.w_, self.h_, pos_x, pos_y)) def init_ui(self): self.parent_.title('Rough surface generator') self.pack(fill=BOTH, expand=True) # top panel with controls frame_top = Frame(self, background=self.TOP_FRAME_BACKGROUND_COLOR) frame_top.pack(fill=X) self.cb = Combobox(frame_top, values=('Gaussian', 'Laplace')) self.cb.current(0) self.cb.pack(side=LEFT, padx=5, expand=True) l1 = Label(frame_top, text=r'Cx', background=self.TOP_FRAME_BACKGROUND_COLOR, width=4) l1.pack(side=LEFT, padx=5, expand=True) self.entry1 = Entry(frame_top, validate='key', validatecommand=(self.register(self.on_validate), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W'), width=10) self.entry1.pack(side=LEFT, padx=5, expand=True) self.entry1.insert(0, str(self.a_)) l1 = Label(frame_top, text=r'Cy', width=4, background=self.TOP_FRAME_BACKGROUND_COLOR) l1.pack(side=LEFT, padx=5) self.entry2 = Entry(frame_top, validate='key', validatecommand=(self.register(self.on_validate), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W'), width=10) self.entry2.pack(side=LEFT, padx=5, expand=True) self.entry2.insert(0, str(self.b_)) but1 = Button(frame_top, text='RUN', command=self.button_action) but1.pack(side=RIGHT, padx=5, pady=5) # central panel. It will have a label with an image. Image may have a random noise state, or # transformed image state self.img_frame.pack(fill=BOTH, expand=True) img_label = Label(self.img_frame, background=None) img_label.pack(expand=True, fill=BOTH, padx=5, pady=5) def on_validate(self, d, i, P, s, S, v, V, W): """ :param d: type of action: 1 - insert, 0 - delete, -1 - other :param i: index of char string to be inserted/deleted, or -1 :param P: value of the entry if the edit is allowed :param s: value of entry prior to editing :param S: the text string being inserted or deleted, if any :param v: the type of validation that is currently set :param V: the type of validation that triggered the callback (key, focusin, focusout, forced) :param W: the tk name of the widget :return: True/False -> Valid / Invalid Found it here: https://stackoverflow.com/questions/4140437/interactively-validating-entry-widget-content-in-tkinter Very good answer! """ if d == '1': if W == str(self.entry1): try: float(s + S) return True except ValueError: self.entry1.delete(0, 'end') self.entry1.insert(0, s) print("Not a number, entry 1") return False if W == str(self.entry2): try: float(s + S) return True except ValueError: self.entry2.delete(0, 'end') self.entry2.insert(0, s) print("Not a number, entry 2") return False return True def init_random_image(self): """ Create a rough surface image from a random noise """ self.update() # set a colormap c_map = cm.get_cmap('bwr') # width and height of the image w_ = self.img_frame.winfo_width()-self.pad_l h_ = self.img_frame.winfo_height()-self.pad_l # generate random noise random_map = np.random.random((h_, w_)) # generate a meshgrid for the filter xv, yv = np.meshgrid(np.linspace(-int(w_ / 2.), int(w_ / 2.), w_), np.linspace(-int(h_ / 2.), int(h_ / 2.), h_)) # define correlation length and width if len(self.entry1.get()) > 0: clx = float(self.entry1.get()) else: return if len(self.entry2.get()) > 0: cly = float(self.entry2.get()) else: return # if self.cb.get().startswith('G'): # Gaussian filter filter_ = np.exp(-np.power(xv, 2) / clx - np.power(yv, 2) / cly) else: # Laplace filter filter_ = np.exp(-np.abs(xv) / clx - np.abs(yv) / cly) # this is a resulting map random_map = np.fft.ifft2(np.multiply(np.fft.fft2(random_map), np.fft.fft2(filter_))) random_map = np.real(random_map) # normalize to [0, 1] random_map -= np.min(random_map) random_map /= np.max(random_map) # create PhotoImage object to add on the panel img = ImageTk.PhotoImage( Image.fromarray( # image really likes unsigned ints)) np.uint8( # convert to colormap you like c_map( # give a random image to color map with values between 0 and 1 # np.random.random( # (self.img_frame.winfo_height()-self.pad_l, self.img_frame.winfo_width()-self.pad_l) # ) random_map )*255 ) ) ) # Gray colormap # img = ImageTk.PhotoImage( # Image.fromarray(np.random.random_integers(0, 255, # (self.img_frame.winfo_height()-self.pad_l, # self.img_frame.winfo_width()-self.pad_l)).astype(np.int8) # ).convert('L') # ) keys = self.img_frame.children.keys() for key in keys: self.img_frame.children[key].configure(image=img) self.img_frame.children[key].image = img def button_action(self): """ """ self.init_random_image()
class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Append Data") self.pack(fill=BOTH, expand=True) labelfont20 = ('Roboto', 15, 'bold') labelfont10 = ('Roboto', 10, 'bold') labelfont8 = ('Roboto', 8, 'bold') frame0 = Frame(self) frame0.pack() lbl0 = Label(frame0, text="Hi Nakul") lbl0.config(font=labelfont20) lbl0.pack(padx=5, pady=5) lbl00 = Label(frame0, text="Fill the data here") lbl00.config(font=labelfont10) lbl00.pack(padx=5, pady=5) #################################### frame1 = Frame(self) frame1.pack() frame1.place(x=50, y=100) lbl1 = Label(frame1, text="Name", width=15) lbl1.pack(side=LEFT, padx=7, pady=5) self.entry1 = Entry(frame1, width=20) self.entry1.pack(padx=5, expand=True) #################################### frame2 = Frame(self) frame2.pack() frame2.place(x=50, y=130) lbl2 = Label(frame2, text="F Name", width=15) lbl2.pack(side=LEFT, padx=7, pady=5) self.entry2 = Entry(frame2) self.entry2.pack(fill=X, padx=5, expand=True) ###################################### frame3 = Frame(self) frame3.pack() frame3.place(x=50, y=160) lbl3 = Label(frame3, text="DOB(D/M/Y)", width=15) lbl3.pack(side=LEFT, padx=7, pady=5) self.entry3 = Entry(frame3) self.entry3.pack(fill=X, padx=5, expand=True) ####################################### frame4 = Frame(self) frame4.pack() frame4.place(x=50, y=190) lbl4 = Label(frame4, text="Medium(H/E)", width=15) lbl4.pack(side=LEFT, padx=7, pady=5) self.entry4 = Entry(frame4) self.entry4.pack(fill=X, padx=5, expand=True) ########################################## frame5 = Frame(self) frame5.pack() frame5.place(x=50, y=225) MODES = [ ("M", "Male"), ("F", "Female"), ] lbl5 = Label(frame5, text="Gender", width=15) lbl5.pack(side=LEFT, padx=7, pady=5) global v v = StringVar() v.set("Male") # initialize for text, mode in MODES: b = Radiobutton(frame5, text=text, variable=v, value=mode) b.pack(side=LEFT, padx=10) ############################################ #####printing line lbl5a = Label( text="___________________________________________________") lbl5a.pack() lbl5a.place(x=45, y=255) ############################################ frame6 = Frame(self) frame6.pack() frame6.place(x=50, y=290) lbl6 = Label(frame6, text="Phone No:", width=15) lbl6.pack(side=LEFT, padx=7, pady=5) self.entry6 = Entry(frame6) self.entry6.pack(fill=X, padx=5, expand=True) ################################################ frame7 = Frame(self) frame7.pack() frame7.place(x=50, y=320) lbl7 = Label(frame7, text="Landline No:", width=15) lbl7.pack(side=LEFT, padx=7, pady=5) self.entry7 = Entry(frame7) self.entry7.pack(fill=X, padx=5, expand=True) ############################################### frame8 = Frame(self) frame8.pack() frame8.place(x=50, y=350) lbl8 = Label(frame8, text="Email:", width=15) lbl8.pack(side=LEFT, padx=7, pady=5) self.entry8 = Entry(frame8) self.entry8.pack(fill=X, padx=5, expand=True) ############################################# frame9 = Frame(self) frame9.pack() frame9.place(x=50, y=380) lbl9 = Label(frame9, text="HomeTown:", width=15) lbl9.pack(side=LEFT, padx=7, pady=5) self.entry9 = Entry(frame9) self.entry9.pack(fill=X, padx=5, expand=True) ############################################### frame10 = Frame(self) frame10.pack() frame10.place(x=60, y=415) lbl10 = Label(frame10, text="Address:") lbl10.pack(padx=5, pady=5) self.entry10 = Text(frame10, height=5, width=28) self.entry10.pack(padx=5, expand=True) ############################################## ############################################# frame11 = Frame(self) frame11.pack() frame11.place(x=350, y=100) lbl11x = Label(frame11, text="_______Class 10th Data_______") lbl11x.pack(padx=0, pady=0) lbl11 = Label(text="%", width=15) lbl11.pack(side=LEFT, padx=0, pady=0) lbl11.place(x=350, y=130) self.entry11 = Entry(width=12) self.entry11.pack(padx=1, expand=True) self.entry11.place(x=420, y=130) lbl11a = Label(text="Passing Year", width=15) lbl11a.pack(padx=0, pady=2) lbl11a.place(x=350, y=160) self.entry11a = Entry(width=12) self.entry11a.pack(padx=1, expand=True) self.entry11a.place(x=420, y=160) lbl11b = Label(text="Board Name", width=15) lbl11b.pack(padx=0, pady=2) lbl11b.place(x=350, y=190) self.entry11b = Entry(width=12) self.entry11b.pack(padx=1, expand=True) self.entry11b.place(x=420, y=190) #################################################### frame12 = Frame(self) frame12.pack() frame12.place(x=510, y=100) lbl12x = Label(frame12, text="_______Class 12th Data_______") lbl12x.pack(padx=0, pady=0) lbl12 = Label(text="%", width=15) lbl12.pack(side=LEFT, padx=0, pady=0) lbl12.place(x=510, y=130) self.entry12 = Entry(width=12) self.entry12.pack(padx=1, expand=True) self.entry12.place(x=580, y=130) lbl12a = Label(text="Passing Year", width=15) lbl12a.pack(padx=0, pady=2) lbl12a.place(x=510, y=160) self.entry12a = Entry(width=12) self.entry12a.pack(padx=1, expand=True) self.entry12a.place(x=580, y=160) lbl12b = Label(text="Board Name", width=15) lbl12b.pack(padx=0, pady=2) lbl12b.place(x=510, y=190) self.entry12b = Entry(width=12) self.entry12b.pack(padx=1, expand=True) self.entry12b.place(x=580, y=190) ##################################################### frame13 = Frame(self) frame13.pack() frame13.place(x=670, y=100) lbl13x = Label(frame13, text="________B.Tech Data_________") lbl13x.pack(padx=0, pady=0) lbl13 = Label(text="%", width=15) lbl13.pack(side=LEFT, padx=0, pady=0) lbl13.place(x=670, y=130) self.entry13 = Entry(width=12) self.entry13.pack(padx=1, expand=True) self.entry13.place(x=740, y=130) lbl13a = Label(text="Passing Year", width=15) lbl13a.pack(padx=0, pady=2) lbl13a.place(x=670, y=160) self.entry13a = Entry(width=12) self.entry13a.pack(padx=1, expand=True) self.entry13a.place(x=740, y=160) lbl13b = Label(text="College", width=15) lbl13b.pack(padx=0, pady=2) lbl13b.place(x=670, y=190) self.entry13b = Entry(width=12) self.entry13b.pack(padx=1, expand=True) self.entry13b.place(x=740, y=190) #################################################### frame14 = Frame(self) frame14.pack() frame14.place(x=380, y=255) lbl14 = Label(frame14, text="Any Other Info:") lbl14.pack(padx=5, pady=5) self.entry14 = Text(frame14, height=5, width=28) self.entry14.pack(padx=5, expand=True) frame15 = Frame(self) frame15.pack() frame15.place(x=650, y=290) openButton = Button(frame15, text="Attatch Resume", width=15, command=self.openResume) openButton.pack(padx=5, pady=5) self.entry15 = Entry(frame15) self.entry15.pack(fill=X, padx=4, expand=True) ############################################################# frame16 = Frame(self) frame16.pack() frame16.place(x=450, y=500) closeButton = Button(frame16, text="SUBMIT", width=35, command=self.getDatax) closeButton.pack(padx=5, pady=5) ####################################### framexxx = Frame(self) framexxx.pack() framexxx.place(x=700, y=600) self.xxx = Label(framexxx, text="Recent Changes Will Appear Here") self.xxx.config(font=labelfont8) self.xxx.pack() ####################################### frame000 = Frame(self) frame000.pack() frame000.place(x=50, y=600) self.lbl000 = Label(frame000, text="Beta/Sample2.0 | (c) Nakul Rathore") self.lbl000.config(font=labelfont8) self.lbl000.pack(padx=5, pady=5) def openResume(self): ftypes = [('All files', '*')] dlg = tkFileDialog.Open(self, filetypes=ftypes, initialdir='C:/Users/') global x15 fl = dlg.show() #file name x15 = fl temp1 = os.path.basename(fl) global temp2 temp2 = os.path.splitext(temp1)[0] self.entry15.delete(0, 'end') self.entry15.insert(0, temp2) ##################### def getDatax(self): x1 = self.entry1.get() x2 = self.entry2.get() x3 = self.entry3.get() x4 = self.entry4.get() x5 = v.get() x6 = int(self.entry6.get()) x7 = int(self.entry7.get()) x8 = self.entry8.get() x9 = self.entry9.get() x10 = self.entry10.get('1.0', 'end') x11 = int(self.entry11.get()) x11a = int(self.entry11a.get()) x11b = self.entry11b.get() x12 = int(self.entry12.get()) x12a = int(self.entry12a.get()) x12b = self.entry12b.get() x13 = int(self.entry13.get()) x13a = int(self.entry13a.get()) x13b = self.entry13b.get() x14 = self.entry14.get('1.0', 'end') list1 = [ x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x11a, x11b, x12, x12a, x12b, x13, x13a, x13b, x14, "=HYPERLINK(" + "\"" + x15 + "\"" + "," + "\"" + temp2 + "\"" + ")" ] wb = openpyxl.load_workbook('..\database\database.xlsx') ws = wb.active print(wb.get_sheet_names()) max_row = ws.get_highest_row() #max_col = ws.get_highest_column() max_col = 21 print max_row for i in xrange(1, max_col + 1): #print list1[i] ws.cell(row=max_row + 1, column=i).value = list1[i - 1] ws.cell(row=max_row + 1, column=max_col).font = Font(color="0000FF", underline='single') ws.cell(row=max_row + 1, column=max_col).alignment = Alignment(horizontal='center') wb.save('..\database\database.xlsx') self.entry1.delete(0, 'end') self.entry2.delete(0, 'end') self.entry3.delete(0, 'end') self.entry4.delete(0, 'end') self.entry6.delete(0, 'end') self.entry7.delete(0, 'end') self.entry8.delete(0, 'end') self.entry9.delete(0, 'end') self.entry10.delete('1.0', '2.0') self.entry11.delete(0, 'end') self.entry11a.delete(0, 'end') self.entry11b.delete(0, 'end') self.entry12.delete(0, 'end') self.entry12a.delete(0, 'end') self.entry12b.delete(0, 'end') self.entry13.delete(0, 'end') self.entry13a.delete(0, 'end') self.entry13b.delete(0, 'end') self.entry14.delete('1.0', '2.0') self.xxx.config(text="Recent Changes Made For : " + x1)
def initUI(self): self.master.title("Telegram UnlimitMe") self.master.minsize(width=500, height=300) self.pack(fill=BOTH, expand=True) frame1 = Frame(self) frame1.pack(fill=X) tknlbl = Label(frame1, text="Token", width=7, font=("Helvetica", 10)) tknlbl.pack(side=LEFT, padx=5, pady=5) tkntxt = Entry(frame1, font=("Helvetica", 10)) tkntxt.pack(fill=X, padx=5, expand=True) tkntxt.insert(0, self.loadtoken()) frame2 = Frame(self) frame2.pack(fill=X) cidlbl = Label(frame2, text="Chat ID", width=7, font=("Helvetica", 10)) cidlbl.pack(side=LEFT, padx=5, pady=5) cidtxt = Entry(frame2, font=("Helvetica", 10)) cidtxt.pack(fill=X, padx=5, expand=True) cidtxt.insert(0, self.loadcid()) frame3 = Frame(self) frame3.pack(fill=X) msglbl = Label(frame3, text="Message", width=8, font=("Helvetica", 10)) msglbl.pack(side=LEFT, anchor=N, padx=5, pady=5) msgtxt = Entry(frame3, width=30, font=("Helvetica", 10)) msgtxt.insert( 0, "UnlimitMe script by (Gooogle)[https://github.com/GooogIe/UnlimitMe]" ) msgtxt.pack(fill=BOTH, padx=5, pady=2) frame8 = Frame(self) frame8.pack(fill=X) tmslbl = Label(frame8, text="Spam times", width=10, font=("Helvetica", 10)) tmslbl.pack(side=LEFT, anchor=N, padx=5, pady=5) tmstxt = Entry(frame8, width=30, font=("Helvetica", 10)) tmstxt.insert(0, "5") tmstxt.pack(fill=BOTH, padx=5, pady=2) frame7 = Frame(self) frame7.pack(fill=X) imglbl = Label(frame7, text="Image Source", width=15, font=("Helvetica", 10)) imglbl.pack(side=LEFT, anchor=N, padx=5, pady=5) imgtxt = Entry(self, width=30, font=("Helvetica", 10)) imgtxt.insert(0, "http://www.photo.it/ok.png") imgtxt.pack(fill=BOTH, padx=5, pady=2) frame4 = Frame(self) frame4.pack(fill=X) x = StringVar() x.set("Chat IDS found: \n" + str(chatids(tkntxt.get()))) cidslbl = Label(frame4, textvariable=x, width=40, font=("Helvetica", 10)) cidslbl.pack(side=LEFT, anchor=N, padx=5, pady=5) listbox = Listbox(frame4, width=30, font=("Helvetica", 10)) listbox.pack(side=RIGHT, padx=5, pady=5) frame5 = Frame(self) frame5.pack(fill=X) spambtn = Button(frame5, relief=FLAT, bg="#1EFE7B", text="Spam", font=("Helvetica", 10), fg="#ffffff", width=15, command=lambda: self.flood(tmstxt.get(), msgtxt.get( ), tkntxt.get(), cidtxt.get())) spambtn.pack(side=RIGHT, padx=5, pady=5) sendbtn = Button( frame5, relief=FLAT, bg="#2ECC71", text="Send", font=("Helvetica", 10), fg="#ffffff", width=15, command=lambda: self.sendMessage(msgtxt.get(), tkntxt.get( ), cidtxt.get()) & listbox.insert(END, "You: " + msgtxt.get())) sendbtn.pack(side=RIGHT, padx=5, pady=5) imgbtn = Button(frame5, relief=FLAT, bg="#1ABC9C", text="Send a Photo", font=("Helvetica", 10), fg="#ffffff", width=15, command=lambda: self.sendImage(imgtxt.get( ), tkntxt.get(), cidtxt.get())) imgbtn.pack(side=LEFT, padx=5, pady=5) savebtn = Button( frame5, relief=FLAT, bg="#E74C3C", text="Save CID & Token", font=("Helvetica", 10), fg="#ffffff", width=15, command=lambda: self.saveall(tkntxt.get(), cidtxt.get())) savebtn.pack(side=LEFT, padx=5, pady=5) getcidsbtn = Button(frame5, relief=FLAT, bg="#3498DB", text="Reload Chat IDS", font=("Helvetica", 10), fg="#ffffff", width=15, command=lambda: x.set("Chat IDS found: \n" + chatids(tkntxt.get()))) getcidsbtn.pack(side=LEFT, padx=5, pady=5) frame6 = Frame(self) frame6.pack(fill=X, expand=True) abtlbl = Label( frame6, font=("Helvetica", 10), text="Created by Habb0n - (c) 2016 - Using Python & Tkinter", width=50) abtlbl.pack(side=BOTTOM, anchor=N, padx=1, pady=1)
class mSim(Frame): #could probably have renamed this class. Oh well... def __init__(self, parent): #base frame init Frame.__init__(self, parent) self.parent = parent self.initUI() self.centerWindow() #Used to stop threads from infinitely looping global exitapp exitapp = False #serial port scanning thread (this is provided as-is and should work) def serial_ports(): """ Lists serial port names :raises EnvironmentError: On unsupported or unknown platforms :returns: A list of the serial ports available on the system """ if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): # this excludes your current terminal "/dev/tty" ports = glob.glob('/dev/tty[A-Za-z]*') elif sys.platform.startswith('darwin'): ports = glob.glob('/dev/tty.*') else: raise EnvironmentError('Unsupported platform') result = [] for port in ports: try: s = serial.Serial(port) s.close() result.append(port) except (OSError, serial.SerialException): pass return result def scanLoop(): #This thread causes lag when closing the program, could fix, but eh it works while True and (not exitapp): self.s_Ports = serial_ports() #update every 4 seconds #(reducing this reduces lag on closing but increases the computation power required) #(Could create more elegant solution, but this works well enough) time.sleep(4) if exitapp == True: break ###END FUNCTION### #Initiallize ports and start scanning thread self.s_Ports = [] sScanThread = Thread(target=scanLoop, args=()) sScanThread.start() threads.append(sScanThread) #create variables self.startmotor = BooleanVar() self.logstate = BooleanVar() self.throttlevar.set("0%") #ghetto fixes woo self.throttleval.set(0) #message sending thread def commsServer(): self.sMsg = None #prev_sMsg = None #don't need this no more def sendSerial(msg, port, baudrate): #just a function to send serial messages if (port is not 'None'): ser = serial.Serial(port, baudrate, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE) if ser.isOpen(): ser.close() ser.open() for b in bytearray("message\n","UTF-8"): ser.write(b) ser.close() while True and (not exitapp): if self.sMsg != None: msg = str(self.sMsg) #send command over serial (pySerial) sendSerial(msg, self.selected_s_Port, self.baudrate) self.sMsg = None else: time.sleep(0.1) if exitapp == True: break ###END FUNCTION### #start the serial sending thingy commsServerThread = Thread(target=commsServer, args=()) commsServerThread.start() threads.append(commsServerThread) #make sure you do this for any new thread you create! #failing to append threads to the threadlist is a criminal offense #not really but it'll stop them from being killed when the program closes def centerWindow(self): w = 800 #eh, who needs scaling anyways h = 640 sw = self.parent.winfo_screenwidth() sh = self.parent.winfo_screenheight() x = (sw - w)/2 y = (sh - h)/2 self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y)) def initUI(self): #Parent Frame self.parent.title("Test Stand Control Panel") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) # Frame 1 (top) frame1 = Frame(self) frame1.pack(fill=X, expand=1) #Start motor button startButton = Button(frame1, text="Start Motor", command=self.startMotor) startButton.pack(side=LEFT, padx=5, pady=5) #Throttle slider lbl1 = Label(frame1, text="Throttle (0-100):", width=14) lbl1.pack(side=LEFT, padx=5, pady=5) scale = Scale(frame1, from_=0, to=100, command=self.onScaleThrottle) scale.pack(side=LEFT, padx=15) self.throttlevar = StringVar() self.throttleval = IntVar() self.label = Label(frame1, text="throttle", textvariable=self.throttlevar, width=5) self.label.pack(side=LEFT) #Throttlesweep checkbutton self.autovar = BooleanVar() cb = Checkbutton(frame1, text="Throttle Sweep", variable=self.autovar, command=self.onClickAuto) cb.pack(side=LEFT, padx=15) #Com port selection field droplbl = Label(frame1, text="Serial Port:", width=10) droplbl.pack(side=LEFT, padx=5, pady=5) self.selected_s_Port = StringVar() self.s_Ports = [] drop = OptionMenu(frame1,self.selected_s_Port,"None",*self.s_Ports) drop.pack(side=LEFT, padx=5) #baudrate selection field (disabled) ## drop2lbl = Label(frame1, text="Baudrate:", width=9) ## drop2lbl.pack(side=LEFT, padx=5, pady=5) ## self.baudrate = StringVar() ## baudrates = [9600, 19200, 38400, 57600, 115200] ## drop2 = OptionMenu(frame1,self.baudrate,*baudrates) ## drop2.pack(side=LEFT, padx=5) #Start serial button comsButton = Button(frame1, text="Start Serial", command=self.startSerial) comsButton.pack(side=LEFT, padx=5, pady=5) #Stop serial button comsStopButton = Button(frame1, text="Stop Serial", command=self.stopSerial) comsStopButton.pack(side=LEFT, padx=5, pady=5) # Frame 2 (second line) frame2 = Frame(self) frame2.pack(fill=X, expand=1) #Amperage entry lbl2 = Label(frame2, text="Max Motor Current (A):", width=21) lbl2.pack(side=LEFT, padx=5, pady=5) self.MaxA_Entry = Entry(frame2) self.MaxA_Entry.pack(side="left", fill=X, padx=5, expand=False) self.MaxA_Entry.insert(0, 10) #Voltage entry lbl3 = Label(frame2, text="Max Motor Voltage (V):", width=20) lbl3.pack(side=LEFT, padx=5, pady=5) self.MaxV_Entry = Entry(frame2) self.MaxV_Entry.pack(side="left", fill=X, padx=5, expand=False) self.MaxV_Entry.insert(0, 14) #Update button updateButton = Button(frame2, text="Update Values", command=self.updateValues) updateButton.pack(side=LEFT, padx=5, pady=5) # Graph Frame framegraph = Frame(self) framegraph.pack(fill=X, expand=1) #Init figures f = Figure(figsize=(4.5,4.5), dpi=100) self.a = f.add_subplot(2, 2, 1) self.d = f.add_subplot(2, 2, 4) self.c = f.add_subplot(2, 2, 3) self.b = f.add_subplot(2, 2, 2) f.set_tight_layout(True) self.canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(f, master=self) self.canvas.show() self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True) #Display Toolbar toolbar = NavigationToolbar2TkAgg(self.canvas, framegraph) toolbar.update() self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True) #Refresh thread function def refreshFigure(): #this is threaded and just refreshes the figure (see time.sleep() for refresh rate) time.sleep(1) while True and (not exitapp): self.a.clear() self.b.clear() self.c.clear() self.d.clear() if not serialStatus: self.a.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0]) self.b.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0]) self.c.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0]) self.d.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0]) else: #debug plotsTimestamp self.a.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Timestamp"]) self.b.plot(serialData[-10:]["Timestamp"],serialData[-10:]["raw_temp"]) self.c.plot(serialData[-10:]["Timestamp"],serialData[-10:]["conv_temp"]) self.d.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Potentiometer"]) #final plots ## self.a.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Thrust"]) ## self.b.plot(serialData[-10:]["Timestamp"],serialData[-10:]["RPM"]) ## self.c.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Current"]) ## self.d.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Voltage"]) #old demo stuff ## self.a.plot([1,2,3,4,5,6,7,8],[5,6,1,3,self.throttleval.get(),9,3,5]) ## self.b.plot([1,2,3,4,5,6,7,8],[3,16,10,30,80,90,30,50]) ## self.c.plot([1,2,3,4,5,6,7,8],[8,5,4,(self.throttleval.get())**(0.5),15,15,15,20]) ## self.d.plot([1,2,3,4,5,6,7,8],[14,14,13,12,12,11.5,11.2,10.5]) #set labels for graphs (could make automatic later) self.a.set_xlabel('time (s)') self.a.set_ylabel('Thrust (N)') self.b.set_xlabel('time (s)') self.b.set_ylabel('RPM') self.c.set_xlabel('time (s)') self.c.set_ylabel('Current (A)') self.d.set_xlabel('time (s)') self.d.set_ylabel('Voltage (V)') #try drawing the canvas try: self.canvas.draw() except: pass #just ignore it, you'll do better next time time.sleep(0.1) #refreshrate ###END FUNCTION### #Start the graphing thread plotThread = Thread(target=refreshFigure, args=()) plotThread.start() threads.append(plotThread) # Frame 0 (Bottom text) frame0 = Frame(self) frame0.pack(side="bottom", fill="x", expand=1) #Display text (allows to give user information) self.textboxvar = StringVar() self.info = Label(frame0, textvariable=self.textboxvar) self.info.pack(side=LEFT, padx=5, pady=5) # Button Frame (large buttons, near bottom) s = Style() #has its own style s.configure('My.TFrame',background='#f7edc3') #fancy colors framered = Frame(self, style='My.TFrame') framered.pack(side="bottom", fill="x", expand=1) #used the tk instead of ttk library for this, allows font and color mods #Save Button self.saveButton = tk.Button(framered, text="Save Data", bg='green', font=('Arial',20,'bold'), command=self.saveData) self.saveButton.pack(side="left", padx=5, pady=5) #Log button self.logButton = tk.Button(framered, text="Start Data Logging", bg="blue", font=('Arial',20,'bold'), command=self.logData) self.logButton.pack(side="left", padx=5, pady=5) #Stop button self.stopButton = tk.Button(framered, text="Stop Motor", bg='red', font=('Arial',20,'bold'), command=self.stopMotor) self.stopButton.pack(side="right", padx=5, pady=5) #Button behavior functions (hopefully self-explanatory) def onClickAuto(self): #for the throttle sweep (should rename) pass #(I guess I can make it do something if I want) def MaxA(self): #self.MaxA_Entry.get() pass #(I guess I can make it do something if I want) def MaxV(self): pass #(I guess I can make it do something if I want) def onScaleThrottle(self, val): throttle = str(int(float(val))) self.throttlevar.set(throttle + "%") self.throttleval.set(throttle) def startSerial(self): try: serialThread.join() except: pass COM_Port = self.selected_s_Port.get() #print type(COM_Port) #print COM_Port if "COM" in COM_Port: self.textboxvar.set("Starting Serial on port " + self.selected_s_Port.get()) serialThread = Thread(target=SerialComm, args=(COM_Port)) #probably want to pass the self.vars? serialThread.start() threads.append(serialThread) global serialStatus serialStatus = True else: self.textboxvar.set("Please select a port (current port: " + self.selected_s_Port.get() + ")") global serialStatus serialStatus = False def stopSerial(self): try: serialThread.join() global serialStatus serialStatus = False except: pass def startMotor(self): #gonna have to make this send a serial message (maybe a popup to confirm too if self.autovar.get(): #I'll give you 5 seconds to move your fingers out of the way print "Preparing to sweep throttle range in 5 seconds" self.textboxvar.set("Sweeping throttle range in 5 seconds") self.startmotor.set(True) else: print "starting motor at " + str(self.throttlevar.get()) + " percent" self.textboxvar.set("Starting motor at " + str(self.throttlevar.get()) + "% in 5 seconds") self.startmotor.set(True) def runMotor(self): #runmotor at specified throttle self.textboxvar.set("Running the motor is not implemented yet") pass def stopMotor(self): #stop motor print "Stopping motor" self.textboxvar.set("Stopping motor (not implemented yet)") self.startmotor.set(False) #self.throttlevar.set("0%") #not sure we want to reset the throttle value pass def saveData(self): #save to csv self.textboxvar.set("Saving logged data.") #for some reason putting this in a thread causes it to not crash, welp try: self.loggedData except AttributeError: self.textboxvar.set("No recorded data.") else: if messagebox.askokcancel("Save", "This will overwrite any data.csv file in the directory. Save anyways?"): def saveCSV(): l = self.loggedData with open('data.csv', 'wb') as f: wtr = csv.writer(f, delimiter= ';') wtr.writerows( l ) time.sleep(2) self.textboxvar.set("Data saved!") saveThread = Thread(target=saveCSV, args=()) saveThread.start() def updateValues(self): #update motor values print "Updating motor values" self.textboxvar.set("Updating motor values (WIP)") pass def logData(self): if self.logstate.get(): self.logButton.configure(text = 'Start Data Logging') self.logButton.configure(bg = 'blue') self.logstate.set(False) else: self.logButton.configure(text = 'Stop Data Logging') self.logButton.configure(bg = 'orange') self.logstate.set(True) #start data logging (probably some kind of thread) def logSerialData(): self.loggedData = [] global serialData l=[serialData[-1].keys()] self.textboxvar.set("Logging from arduino is not implemented yet") #apparently spamming these messages causes crashes, good to know while self.logstate.get() and (not exitapp): print 'Logging Data' time.sleep(1) global serialData data = serialData[-1].values() #recieve and store data (pySerial) l.append(data) self.loggedData = l logThread = Thread(target=logSerialData, args=()) logThread.start() threads.append(logThread)