def Push(self): if len(self.newAdditions) > 0: mycsv.write(mstr=self.newAdditions, lesson=True, new=True) self.controller.controller.doValues() self.curDecksAndLevels = srs.findDecksAndLevels() self.newAdditions = [] self.newDeckLevels = {} self.populateSessionAdditionsListbox() old = self.deckSelectListbox.curselection() self.populateDeckListbox() self.deckSelectListbox.selection_set(old) self.deckSelectListbox.selection_anchor(old) self.deckSelectListbox.see(tk.ANCHOR) old = self.levelSelectListbox.curselection() self.populateLevelsListbox() self.levelSelectListbox.selection_set(old) self.levelSelectListbox.selection_anchor(old) self.levelSelectListbox.see(tk.ANCHOR) self.populateEntriesListbox() def d(self): for i in self.imgDl: audio.preload(i, r=True) for i in self.audDl: audio.preload(i, r=True) threading.Thread(target=d, kwargs={ 'self': self }, daemon=True).start()
def saveEditsSearch(self): newline = [] self.changes = [] for n, w in enumerate(self.entries): try: newline.append(w.get().replace(",", "commaChar")) except: newline.append(w['text']) self.changes.append(','.join(newline)) mycsv.write(mstr=self.changes, lesson=True) self.controller.controller.doValues() self.updateResults(args=True, reset=True)
def saveEditsDeck(self, origDeckName): newDeckName = self.deckNameEntry.get() mycsv.write(mstr=(origDeckName, newDeckName), option=11) for w in self.winfo_children(): w.destroy() self.controller.controller.doValues() self.deckLevels = self.controller.controller.dandl self.createWidgets() for n, i in enumerate(self.decksLBox.get(0, tk.END)): if i == newDeckName: self.decksLBox.selection_set(n) self.decksLBoxSelect(None)
def ignoreAll(self, deck, level, val): mycsv.write(mstr=val, row=(deck, level), option=13)
def goMainMenu(self): # DecksAndLevelsFuncs.goMainMenu(self) if len(self.changes) > 1: mycsv.write(mstr=self.changes, lesson=True) self.controller.controller.doValues() self.controller.controller.show_frame("Mainmenu")
def doLearnLesson(sentences, root, tWidget, eWidget, tagsWidget, cWidget): curdate = "{}/{}/{}".format(datetime.now().day, datetime.now().month, datetime.now().year) gotAnswer = False completed = [] while len(sentences) > 0: random.shuffle(sentences) for n, i in enumerate(sentences): root.line = i.split(",") eWidget.delete(0, len(eWidget.get())) if not 'img-' in root.line[1].replace( 'commaChar', ',') and not 'audio-' in root.line[1].replace( 'commaChar', ','): tWidget.configure(text=root.line[1].replace("commaChar", ","), image=None) tWidget.unbind('<Button-1>') elif 'img-' in root.line[1].replace('commaChar', ','): imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format( consts.cwd(), consts.fname(), root.line[11], root.line[12], consts.images(), root.line[1].replace('img-', '')) im = Image.open(imgFile) #im = im.resize(size=(50,50)) img = ImageTk.PhotoImage(im) tWidget.img = img tWidget.configure(image=img, text='') tWidget.unbind('<Button-1>') elif 'audio-' in root.line[1].replace('commaChar', ','): img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') def audPlay(): img = ImageTk.PhotoImage(audDark) tWidget.img = img tWidget.configure(image=img, text='') audio.play(root.line, a=True) img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') tWidget.bind( '<Button-1>', lambda x: threading.Thread( target=audPlay, daemon=True).start()) tagsWidget.configure( text=root.line[2].replace("commaChar", ",") ) if not root.line[2] == "none" else tagsWidget.configure(text="") if root.line[3] == 'no': cAnswerEntry = tk.Label( root, text=root.line[0].replace("commaChar", ",").replace(".", ""), font=(lambda x: cAnswerEntry.cget('font'), 32), width=50, wraplength=1255) cAnswerEntry.grid(row=4, column=0, columnspan=2, rowspan=1) cWidget.set(0) root.update() if not 'audio-' in root.line[1].replace('commaChar', ','): audio.preload(root.line) audio.play(root.line) else: img = ImageTk.PhotoImage(audDark) tWidget.img = img tWidget.configure(image=img, text='') root.update() audio.play(root.line, a=True) img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') root.line[3] = 'step0' else: cWidget.set(int(root.line[3].split("step")[1])) eWidget.focus() gotAnswer = False root.lineEdited = False userinput, time = waitForAnswer(gotAnswer, root, eWidget, root.line) try: root.editEntrytl.destroy() except: pass if userinput == root.line[0].lower().replace(".", ""): eWidget["bg"] = "lime green" eWidget["fg"] = "white" root.line[3] = "step{}".format( int(root.line[3].split("step")[1]) + 1) cWidget.set(int(root.line[3].split("step")[1])) root.update() root.line = ','.join(root.line) sentences[n] = root.line else: eWidget["bg"] = "red" eWidget["fg"] = "white" root.line[3] = "no-step{}".format( int(root.line[3].split("step")[1])) root.update() root.line = ','.join(root.line) sentences[n] = root.line cAnswerEntry.destroy() afterAnswer(eWidget, root.line.split(","), root) if not 'no' in root.line.split(",")[3]: if int(root.line.split(",")[3].split('step')[1]) == 6: root.line = root.line.split(",") root.line[3] = 'yes' root.line[6] = curdate root.line[8] = addDays(root.line) root.line = ','.join(root.line) completed.append(root.line) del sentences[n] else: root.line = root.line.split(",") root.line[3] = root.line[3].split("no-")[1] root.line = ','.join(root.line) sentences[n] = root.line root.update() for widget in root.winfo_children(): widget.destroy() root.update() text = tk.Label(root, font=(lambda x: Label.cget('font'), 32), text="lesson Done!") text.grid() root.update() mycsv.write(consts.workdoc(), mstr=completed, lesson=True, review=False, learn=True)
def doReviewLesson(sentences, root, tWidget, eWidget, tagsWidget, cWidget): curdate = "{}/{}/{}".format(datetime.now().day, datetime.now().month, datetime.now().year) completed = [] uncompleted = [] redo = [] hissentences = [] gotAnswer = False while len(sentences) > 0: for n, i in enumerate(sentences): cWidget.configure(text="{}/{}".format( len(completed) + 1, len(sentences) + len(completed) + len(uncompleted) + len(redo))) # if len(uncompleted) > 0: # if random.randint(0,4) == 1: # i = uncompleted[len(uncompleted) - 1] # n = len(uncompleted) - 1 # fromUncomplete = True root.line = i.split(",") eWidget.delete(0, len(eWidget.get())) if not 'img-' in root.line[1].replace( 'commaChar', ',') and not 'audio-' in root.line[1].replace( 'commaChar', ','): tWidget.configure(text=root.line[1].replace("commaChar", ","), image=None) tWidget.unbind('<Button-1>') elif 'img-' in root.line[1].replace('commaChar', ','): imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format( consts.cwd(), consts.fname(), root.line[11], root.line[12], consts.images(), root.line[1].replace('img-', '')) im = Image.open(imgFile) img = ImageTk.PhotoImage(im) tWidget.img = img tWidget.configure(image=img, text='') tWidget.unbind('<Button-1>') elif 'audio-' in root.line[1].replace('commaChar', ','): img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') def audPlay(): img = ImageTk.PhotoImage(audDark) tWidget.img = img tWidget.configure(image=img, text='') audio.play(root.line, a=True) img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') tWidget.bind( '<Button-1>', lambda x: threading.Thread( target=audPlay, daemon=True).start()) tagsWidget.configure( text=root.line[2].replace("commaChar", ",") ) if not root.line[2] == "none" else tagsWidget.configure(text="") eWidget.focus() gotAnswer = False root.lineEdited = False res = waitForAnswer(gotAnswer, root, eWidget, root.line) userinput = res[0] wait = res[1] try: root.editEntrytl.destroy() except: pass if root.lineEdited == False: if userinput == root.line[0].lower().replace(".", ""): eWidget["bg"] = "lime green" eWidget["fg"] = "white" root.update() root.line[4] = str(int(root.line[4]) + 1) root.line[5] = str(int(root.line[5]) + 1) root.line[6] = curdate root.line[7] = 'success' root.line[9] = str(int(root.line[9]) + 1) root.line[8] = addDays(root.line) nhisline = root.line[:] nhisline.append('none') nhisline.append("-1") nhisline.append(str(datetime.now().strftime('%H:%M:%S'))) nhisline.append(str(wait)) hissentences.append(nhisline) root.line = ','.join(root.line) completed.append(root.line) del sentences[n] else: eWidget["bg"] = "red" eWidget["fg"] = "white" root.update() root.line[4] = str(int(root.line[4]) + 1) root.line[6] = curdate root.line[7] = 'fail' root.line[8] = addDays(root.line) root.line = ','.join(root.line) redo.append(root.line) del sentences[n] else: if root.line[13] == "no": del sentences[n] root.line = ','.join(root.line) sentences.append(root.line) elif root.line[13] == "yes": del sentences[n] nhisline = root.line[:] nhisline.append('none') nhisline.append("-1") nhisline.append(str(datetime.now().strftime('%H:%M:%S'))) nhisline.append('-1') hissentences.append(nhisline) root.line = ','.join(root.line) completed.append(root.line) afterAnswer(eWidget, root.line.split(","), root) root.lineEdited = False while len(redo) > 0: for n, i in enumerate(redo): cWidget.configure(text="{}/{}".format( len(completed) + 1, len(sentences) + len(completed) + len(uncompleted) + len(redo))) root.line = i.split(",") if not 'img-' in root.line[1].replace( 'commaChar', ',') and not 'audio-' in root.line[1].replace( 'commaChar', ','): tWidget.configure(text=root.line[1].replace( "commaChar", ","), image=None) tWidget.unbind('<Button-1>') elif 'img-' in root.line[1].replace('commaChar', ','): imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format( consts.cwd(), consts.fname(), root.line[11], root.line[12], consts.images(), root.line[1].replace('img-', '')) im = Image.open(imgFile) #im = im.resize(size=(50,50)) img = ImageTk.PhotoImage(im) tWidget.img = img tWidget.configure(image=img, text='') tWidget.unbind('<Button-1>') elif 'audio-' in root.line[1].replace('commaChar', ','): img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') def audPlay(): img = ImageTk.PhotoImage(audDark) tWidget.img = img tWidget.configure(image=img, text='') audio.play(root.line, a=True) img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') tWidget.bind( '<Button-1>', lambda x: threading.Thread(target=audPlay, daemon=True).start()) gotAnswer = False root.lineEdited = False cAnswerEntry = tk.Label( root, text=root.line[0].lower().replace(".", ""), font=(lambda x: cAnswerEntry.cget('font'), 32), width=50, wraplength=1255) cAnswerEntry.grid(row=4, column=0, columnspan=2, rowspan=1) res = waitForAnswer(gotAnswer, root, eWidget, root.line) userinput = res[0] wait = res[1] + wait try: root.editEntrytl.destroy() except: pass if root.lineEdited == False: if userinput == root.line[0].lower().replace(".", ""): eWidget["bg"] = "lime green" eWidget["fg"] = "white" root.update() root.line[9] = str(1) root.line[8] = addDays(root.line) root.line.append(str(wait)) root.line = ','.join(root.line) uncompleted.append(root.line) del redo[n] else: eWidget["bg"] = "red" eWidget["fg"] = "white" root.line = ','.join(root.line) redo.append(root.line) del redo[n] root.update() else: if root.line[13] == "no": del redo[n] root.line = ','.join(root.line) redo.append(root.line) elif root.line[13] == "yes": del redo[n] nhisline = root.line[:] nhisline.append('none') nhisline.append("-1") nhisline.append( str(datetime.now().strftime('%H:%M:%S'))) nhisline.append('-1') hissentences.append(nhisline) root.line = ','.join(root.line) completed.append(root.line) afterAnswer(eWidget, root.line.split(","), root) root.lineEdited = False cAnswerEntry.destroy() while len(uncompleted) > 0: for n, i in enumerate(uncompleted): cWidget.configure(text="{}/{}".format( len(completed) + 1, len(sentences) + len(completed) + len(uncompleted))) root.line = i.split(",") if not 'img-' in root.line[1].replace( 'commaChar', ',') and not 'audio-' in root.line[1].replace( 'commaChar', ','): tWidget.configure(text=root.line[1].replace("commaChar", ","), image=None) tWidget.unbind('<Button-1>') elif 'img-' in root.line[1].replace('commaChar', ','): imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format( consts.cwd(), consts.fname(), root.line[11], root.line[12], consts.images(), root.line[1].replace('img-', '')) im = Image.open(imgFile) #im = im.resize(size=(50,50)) img = ImageTk.PhotoImage(im) tWidget.img = img tWidget.configure(image=img, text='') tWidget.unbind('<Button-1>') elif 'audio-' in root.line[1].replace('commaChar', ','): img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') def audPlay(): img = ImageTk.PhotoImage(audDark) tWidget.img = img tWidget.configure(image=img, text='') audio.play(root.line, a=True) img = ImageTk.PhotoImage(audLight) tWidget.img = img tWidget.configure(image=img, text='') tWidget.bind( '<Button-1>', lambda x: threading.Thread( target=audPlay, daemon=True).start()) gotAnswer = False root.lineEdited = False cAnswerEntry = tk.Label(root, text=root.line[0].lower().replace(".", ""), font=(lambda x: cAnswerEntry.cget('font'), 32), width=50, wraplength=1255) cAnswerEntry.grid(row=4, column=0, columnspan=2, rowspan=1) res = waitForAnswer(gotAnswer, root, eWidget, root.line) userinput = res[0] wait = res[1] try: root.editEntrytl.destroy() except: pass if root.lineEdited == False: if userinput == root.line[0].lower().replace(".", ""): eWidget["bg"] = "lime green" eWidget["fg"] = "white" root.update() root.line[9] = str(1) root.line[8] = addDays(root.line) nhisline = root.line[:-1] nhisline.append('none') nhisline.append("-1") nhisline.append(str(datetime.now().strftime('%H:%M:%S'))) nhisline.append(str(float(root.line[15]) + wait)) del root.line[15] hissentences.append(nhisline) root.line = ','.join(root.line) completed.append(root.line) del uncompleted[n] else: eWidget["bg"] = "red" eWidget["fg"] = "white" root.update() root.line = ','.join(root.line) uncompleted.append(root.line) del uncompleted[n] else: if root.line[13] == "no": del uncompleted[n] root.line = ','.join(root.line[:-1]) uncompleted.append(root.line) elif root.line[13] == "yes": del uncompleted[n] nhisline = root.line[:-1] nhisline.append('none') nhisline.append("-1") nhisline.append(str(datetime.now().strftime('%H:%M:%S'))) nhisline.append('-1') hissentences.append(nhisline) root.line = ','.join(root.line[:-1]) completed.append(root.line) afterAnswer(eWidget, root.line.split(","), root) root.lineEdited = False root.update() for widget in root.winfo_children(): widget.destroy() root.update() text = tk.Label(root, font=(lambda x: Label.cget('font'), 32), text="Review Done!") text.grid() root.update() mycsv.write(consts.workdoc(), mstr=completed, lesson=True, review=True) mycsv.writeHistory(hissentences, tag='review')