def body(self, statistic, stat_count_row): self.last_button = 0 self.buttons = [] self.frame_btn = Frame(self, borderwidth=2, relief=GROOVE) self.frame_btn.grid(row=0, column=0, sticky=N + S + E + W) Label(self.frame_btn, text="").grid(row=0, column=0) self.button_add(_("btn_ru_en"), self.show_ru_en) self.button_add(_("btn_en_ru"), self.show_en_ru) self.button_add(_("btn_common_stat"), self.show_common_stat) Label(self.frame_btn, text="").grid(row=0, column=4) self.frame_btn.grid_rowconfigure(0, weight=1) self.frame_btn.grid_columnconfigure(1, weight=1) self.frame_btn.grid_columnconfigure(2, weight=1) self.frame_btn.grid_columnconfigure(3, weight=1) self.init_common_stat(statistic) self.init_detailed_stat(statistic, stat_count_row) self.grid_rowconfigure(1, weight=1) self.grid_columnconfigure(0, weight=1) self.button_sel(0) self.show_ru_en()
def draw_callback(self, row, col, celltxt, clr): if col == 6: words = [_("st_learned"), _("st_study"), _("st_learn")] ind = int(celltxt) return words[ind], clr_stat[ind] else: return celltxt, clr
def body(self, master): self.var = IntVar(0) Radiobutton(master, text=_("end_lesson"), variable=self.var, value=0).grid(sticky="w") Radiobutton(master, text=_("end_program"), variable=self.var, value=1).grid(sticky="w") self.resizable(False, False) return None
def set_practice_result(self, is_success, right_answer): self.lbl_correct_word["text"] = right_answer.word self.lbl_correct_word_tr["text"] = right_answer.transcription if is_success: self.lbl_result_msg["text"] = _("correct") self.lbl_result_msg["fg"] = clr_success else: self.lbl_result_msg["text"] = _("incorrect") self.lbl_result_msg["fg"] = clr_error
def set_practice_result(self, is_success, right_answer): self.lbl_correct_word["text"] = right_answer.word self.lbl_correct_word_tr["text"] = "" if self.cfg.get_dict()["hide_transcription"] == "yes" else right_answer.transcription if is_success: self.lbl_result_msg["text"] = _("correct") self.lbl_result_msg["fg"] = clr_success else: self.lbl_result_msg["text"] = _("incorrect") self.lbl_result_msg["fg"] = clr_error
class _EditWordDialog(TopDialog): def __init__(self, parent, en_str, tr_str, ru_str, callback): TopDialog.__init__(self, parent, (en_str, tr_str, ru_str)) self._callback = callback self.title(_("win_editword_title")) self.wait_visibility() self.set_size(self.winfo_reqwidth(), self.winfo_reqheight()) self.resizable(True, False) self.run() def init_window(self, (en_str, tr_str, ru_str)): prnt = self fnt_edit = Font(family="Arial", size=-16) # 12pt self.var_en = StringVar(value=en_str) self.var_tr = StringVar(value=tr_str) self.var_ru = StringVar(value=ru_str) Label(prnt, text=_("lbl_edit_en")).grid(padx=15, sticky=SW) edit_en = Entry(prnt, font=fnt_edit, textvariable=self.var_en) edit_en.grid(padx=15, pady=4, sticky=EW) edit_en.focus() edit_en.select_range(0, END) Label(prnt, text=_("lbl_edit_tr")).grid(padx=15, sticky=W) Entry(prnt, font=fnt_edit, textvariable=self.var_tr).grid(padx=15, pady=4, sticky=EW) Label(prnt, text=_("lbl_edit_ru")).grid(padx=15, sticky=W) Entry(prnt, font=fnt_edit, textvariable=self.var_ru).grid(padx=15, pady=4, sticky=EW) frm_btn = Frame(prnt) Button(frm_btn, text="OK", width=10, command=self.on_ok, default=ACTIVE).pack(side=LEFT, padx=5, pady=5) Button(frm_btn, text="Cancel", width=10, command=self.on_destroy).pack(side=LEFT, padx=5, pady=5) frm_btn.grid(padx=10, pady=5, sticky=EW) self.bind("<Return>", self.on_ok) self.bind("<Escape>", self.on_destroy) prnt.grid_rowconfigure(0, minsize=30) prnt.grid_columnconfigure(0, weight=1) prnt.minsize(300, prnt.minsize()[1])
def draw_common_stat(self): row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]] table = [ row_name[i] + it for i, it in enumerate(self.statistic.get_common_stat()) ] table = [[ "", _("clm_ru_en_cnt"), _("clm_en_ru_cnt"), _("clm_ru_en_pers"), _("clm_en_ru_pers") ]] + table len_clmn = [0, 0, 0, 0, 0] for row in table: for i, text in enumerate(row): len_clmn[i] = max(len_clmn[i], self.tbl_fnt.measure(text)) len_clmn = [i + 20 for i in len_clmn] rc_left = 0 rc_top = 1 row_height = self.tbl_fnt.metrics("linespace") + 1 self.canvas.create_table(rc_left, rc_top, row_height, 5, len_clmn) for i, row in enumerate(table): for j, text in enumerate(row): if i > 0 and j > 0: alignment = RIGHT else: alignment = LEFT self.canvas.fill_cell(j, i, text, clr_black, self.tbl_fnt, alignment)
def set_stat(self, stat): success_cnt = stat[0] max_success = stat[1] error_cnt = stat[2] self.lbl_stat_success["text"] = "%i %s %i/" % (success_cnt, _("of"), max_success) self.lbl_stat_error["text"] = "%i" % error_cnt
def __init__(self, parent, en_str, tr_str, ru_str, callback): TopDialog.__init__(self, parent, (en_str, tr_str, ru_str)) self._callback = callback self.title(_("win_editword_title")) self.wait_visibility() self.set_size(self.winfo_reqwidth(), self.winfo_reqheight()) self.resizable(True, False) self.run()
def __init__(self, parent, factory, statistic, stat_count_row): TopDialog.__init__(self, parent, (statistic, stat_count_row)) self.factory = factory self.title(_("win_statistic_title")) self.wait_visibility() self.set_size(self.table_detailed_stat.get_totalWidth(), 750) self.resizable(True, True) self.grab_set() self.run()
def set_wrong_answer(self, right_answer): self.edit_translate["state"] = "readonly" self.edit_translate["font"] = self.fnt_answer_error self.edit_translate['fg'] = clr_error self.lbl_correct_word["text"] = right_answer.word self.lbl_correct_word_tr["text"] = "" if self.cfg["hide_transcription"] == "yes" else right_answer.transcription self.lbl_result_msg["text"] = _("incorrect") self.lbl_result_msg["fg"] = clr_error self.show_find_in_web_btn(True) self.show_edit_word_btn(True)
def draw_stat(self, stat_table): rc_left = 0 rc_top = 1 row_height = self.tbl_fnt.metrics("linespace")+1 self.canvas.create_table(rc_left, rc_top, row_height, len(stat_table)+1, self.len_clmn) state_str = (_("st_learned"), _("st_study"), _("st_learn")) for i, row in enumerate([self.get_header_text()]+stat_table): for j, text in enumerate(row): if i > 0 and j in (0, 4, 5, 6): alignment = RIGHT else: alignment = LEFT if i > 0 and j == 7: txt, clr = state_str[text], clr_stat[text] else: txt, clr = text, clr_black self.canvas.fill_cell(j, i, txt, clr, self.tbl_fnt, alignment)
def set_word(self, new_word, is_new): if is_new: self.lbl_result_msg["text"] = "" else: self.lbl_result_msg["text"] = _("reiterate") self.lbl_result_msg["fg"] = clr_error self.lbl_word["text"] = new_word.word self.lbl_transcription["text"] = "" if self.cfg.get_dict()["hide_transcription"] == "yes" else new_word.transcription self.lbl_correct_word["text"] = "" self.lbl_correct_word_tr["text"] = "" self.edit_translate.delete(0, END)
def set_word(self, new_word, is_new): if is_new: self.lbl_result_msg["text"] = "" else: self.lbl_result_msg["text"] = _("reiterate") self.lbl_result_msg["fg"] = clr_error self.lbl_word["text"] = new_word.word self.lbl_transcription["text"] = new_word.transcription self.lbl_correct_word["text"] = "" self.lbl_correct_word_tr["text"] = "" self.edit_translate.delete(0, END)
def set_wrong_answer(self, right_answer): self.edit_translate["state"] = "readonly" self.edit_translate["font"] = self.fnt_answer_error self.edit_translate['fg'] = clr_error self.lbl_correct_word["text"] = right_answer.word self.lbl_correct_word_tr["text"] = "" if self.cfg[ "hide_transcription"] == "yes" else right_answer.transcription self.lbl_result_msg["text"] = _("incorrect") self.lbl_result_msg["fg"] = clr_error self.show_find_in_web_btn(True) self.show_edit_word_btn(True)
def init_common_stat(self, statistic): self.frame_common_stat = Frame(self) self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W) model_common_stat = TableModel(10, False) model_common_stat.add_column(_("clm_name"), typedata='text', align='left') model_common_stat.add_column(_("clm_ru_en_cnt"), typedata='number', align='right', max_val=u"99999") model_common_stat.add_column(_("clm_en_ru_cnt"), typedata='number', align='right', max_val=u"99999") model_common_stat.add_column(_("clm_ru_en_pers"), typedata='percent', align='right', max_val=u"100.0 %") model_common_stat.add_column(_("clm_en_ru_pers"), typedata='percent', align='right', max_val=u"100.0 %") row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]] for row in [row_name[i] + it for i, it in enumerate(statistic.get_common_stat())]: model_common_stat.add_row(row) self.table_common_stat = TableCanvas(self.frame_common_stat, model_common_stat, sort_enable=False) self.table_common_stat.createTableFrame() self.frame_common_stat.grid_forget()
def body(self): fnt = Font(family="Arial", size=10) self.tbl_fnt = fnt num_len = max(fnt.measure(_("clm_num")), fnt.measure("9999")) word_len = max(fnt.measure(_("clm_word")), fnt.measure(_("clm_transcription")), fnt.measure(_("clm_translate"))) cnt_len = max(fnt.measure("9999"), fnt.measure(_("clm_cnt_suc")), fnt.measure(_("clm_cnt_err"))) prs_len = max(fnt.measure("100.0%"), fnt.measure(_("clm_pers_suc"))) state_len = max(fnt.measure(_("st_learn")), fnt.measure(_("st_learned")), fnt.measure(_("st_study")), fnt.measure(_("clm_state"))) self.len_clmn = [num_len, word_len, word_len, word_len, cnt_len, cnt_len, prs_len, state_len] # Находим слова с большей длинной, чем умолчательная for stat in self.statistic.get_ru_en(): for it in range(1, 4): if len(stat[it]) > 10: self.len_clmn[it] = max(self.len_clmn[it], fnt.measure(stat[it])) self.len_clmn = [i+20 for i in self.len_clmn] Label(self, text="", bg=clr_tbl_bg[0]).grid(row=0, column=0, sticky=W+E, padx=2) self.btRuEn = Button(self, text=_("btn_ru_en"), command=self.show_ru_en) self.btRuEn.grid(row=0, column=1, sticky=W+E, pady=5, padx=1) self.btEnRu = Button(self, text=_("btn_en_ru"), command=self.show_en_ru) self.btEnRu.grid(row=0, column=2, sticky=W+E, pady=5, padx=1) self.btCmnStat = Button(self, text=_("btn_common_stat"), command=self.show_common_stat) self.btCmnStat.grid(row=0, column=3, sticky=W+E, pady=5, padx=1) self.canvas = ScrollCanvas(self) self.canvas.grid(row=1, column=1, columnspan=5) self.grid_rowconfigure(1, weight=1) self.grid_columnconfigure(1, weight=1) self.grid_columnconfigure(2, weight=1) self.grid_columnconfigure(3, weight=1) self.show_ru_en() self.canvas.config(scrollregion=self.canvas.bbox("all"))
def init_common_stat(self, statistic): self.frame_common_stat = Frame(self) self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W) model_common_stat = TableModel(10, False) model_common_stat.add_column(_("clm_name"), typedata='text', align='left') model_common_stat.add_column(_("clm_ru_en_cnt"), typedata='number', align='right', max_val=u"99999") model_common_stat.add_column(_("clm_en_ru_cnt"), typedata='number', align='right', max_val=u"99999") model_common_stat.add_column(_("clm_ru_en_perc"), typedata='percent', align='right', max_val=u"100.0 %") model_common_stat.add_column(_("clm_en_ru_perc"), typedata='percent', align='right', max_val=u"100.0 %") row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]] for row in [ row_name[i] + it for i, it in enumerate(statistic.get_common_stat()) ]: model_common_stat.add_row(row) self.table_common_stat = TableCanvas(self.frame_common_stat, model_common_stat, sort_enable=False) self.table_common_stat.createTableFrame() self.frame_common_stat.grid_forget()
def __init__(self, parent, statistic, stat_count_row): Toplevel.__init__(self, parent) self.withdraw() self.body(statistic, stat_count_row) self.deiconify() self.transient(parent) self.parent = parent self.title(_("win_statistic_title")) self.resizable(True, True) self.set_size() self.wait_visibility() # window needs to be visible for the grab self.grab_set() self.protocol("WM_DELETE_WINDOW", self.on_destroy) self.focus_set() self.wait_window(self)
def draw_common_stat(self): row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]] table = [row_name[i] + it for i, it in enumerate(self.statistic.get_common_stat())] table = [["", _("clm_ru_en_cnt"), _("clm_en_ru_cnt"), _("clm_ru_en_pers"), _("clm_en_ru_pers")]] + table len_clmn = [0, 0, 0, 0, 0] for row in table: for i, text in enumerate(row): len_clmn[i] = max(len_clmn[i], self.tbl_fnt.measure(text)) len_clmn = [i+20 for i in len_clmn] rc_left = 0 rc_top = 1 row_height = self.tbl_fnt.metrics("linespace")+1 self.canvas.create_table(rc_left, rc_top, row_height, 5, len_clmn) for i, row in enumerate(table): for j, text in enumerate(row): if i > 0 and j > 0: alignment = RIGHT else: alignment = LEFT self.canvas.fill_cell(j, i, text, clr_black, self.tbl_fnt, alignment)
def __init__(self, parent, statistic): Toplevel.__init__(self, parent, bg=clr_tbl_bg[0]) self.transient(parent) self.parent = parent self.statistic = statistic self.body() self.wait_visibility() # window needs to be visible for the grab self.grab_set() width = min(1050, self.winfo_screenwidth()) height = min(750, self.winfo_screenheight()) x = (self.winfo_screenwidth() - width) / 2 y = (self.winfo_screenheight() - height) / 2 self.title(_("win_statistic_title")) self.resizable(True, True) self.wm_geometry("%dx%d+%d+%d" % (width, height, x, y)) self.focus_set() self.protocol("WM_DELETE_WINDOW", self.on_destroy) self.wait_window(self)
def init_window(self): # 12pt = 16px fnt_stat = Font(family="Arial", size=-12) # 9 fnt_msg = Font(family="Arial", size=-13, weight="bold") # 10 fnt_word = Font(family="Arial", size=-19) # 14 fnt_transcription = Font(family="Arial", size=-13) # 10 fnt_translate = Font(family="Arial", size=-16) # 12 ######################################################## frm_stat = Frame(self, bg=clr_stat_frame, bd=5) frm_stat.pack(fill="both") Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, text=_("correct_incorrect")).pack(side="left") img = PhotoImage(file="info.gif") bt = Button(frm_stat, image=img, bg=clr_stat_frame, relief="flat", command=self.show_statistic) bt.image = img bt.pack(side="right") self.lbl_stat_error = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_error, borderwidth=0) self.lbl_stat_error.pack(side="right") self.lbl_stat_success = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_success, borderwidth=0) self.lbl_stat_success.pack(side="right") ######################################################## frm_word = Frame(self, bg=clr_word_frame, bd=5) frm_word.pack(fill="both") self.lbl_word = Label(frm_word, font=fnt_word, bg=clr_word_frame) self.lbl_word.pack() self.lbl_transcription = Label(frm_word, font=fnt_transcription, bg=clr_word_frame) self.lbl_transcription.pack() ######################################################## frm_answer = Frame(self, bg=clr_answer_frame, bd=15) frm_answer.pack(fill="both") frm_message = Frame(frm_answer, bg=clr_answer_frame) frm_message.pack(fill="both") self.lbl_result_msg = Label(frm_message, font=fnt_msg, bg=clr_answer_frame) self.lbl_result_msg.pack(side="left") self.lbl_correct_word = Label(frm_message, font=fnt_msg, bg=clr_answer_frame) self.lbl_correct_word.pack(side="left") self.lbl_correct_word_tr = Label(frm_message, font=fnt_transcription, bg=clr_answer_frame) self.lbl_correct_word_tr.pack(side="left") self.edit_translate = Entry(frm_answer, font=fnt_translate, width=30) self.edit_translate.pack(side="bottom") self.edit_translate.focus() self.bind("<Return>", self.on_check_translate) self.bind("<FocusIn>", lambda event: self.edit_translate.focus()) ######################################################## x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2 y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2 self.title(_("win_learning_english")) self.resizable(False, False) self.wm_geometry("+%d+%d" % (x, y)) self.protocol("WM_DELETE_WINDOW", self.on_destroy)
def show_error(loc_res_msg): tkMessageBox.showerror(_("win_error"), _(loc_res_msg))
def get_header_text(self): return (_("clm_num"), _("clm_word"), _("clm_transcription"), _("clm_translate"), _("clm_cnt_suc"), _("clm_cnt_err"), _("clm_pers_suc"), _("clm_state"))
def show_critical_error(loc_res_msg): tkMessageBox.showerror(_("win_critical_error"), _(loc_res_msg))
def on_ok(self, event=None): if tkMessageBox.askyesno(_("win_confirm_title"), _("msg_confirm_rename")): if self._callback(self.var_en.get(), self.var_tr.get(), self.var_ru.get()): self.on_destroy()
class _StatisticDialog(TopDialog): def __init__(self, parent, factory, statistic, stat_count_row): TopDialog.__init__(self, parent, (statistic, stat_count_row)) self.factory = factory self.title(_("win_statistic_title")) self.wait_visibility() self.set_size(self.table_detailed_stat.get_totalWidth(), 750) self.resizable(True, True) self.grab_set() self.run() def init_common_stat(self, statistic): self.frame_common_stat = Frame(self) self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W) model_common_stat = TableModel(10, False) model_common_stat.add_column(_("clm_name"), typedata='text', align='left') model_common_stat.add_column(_("clm_ru_en_cnt"), typedata='number', align='right', max_val=u"99999") model_common_stat.add_column(_("clm_en_ru_cnt"), typedata='number', align='right', max_val=u"99999") model_common_stat.add_column(_("clm_ru_en_perc"), typedata='percent', align='right', max_val=u"100.0 %") model_common_stat.add_column(_("clm_en_ru_perc"), typedata='percent', align='right', max_val=u"100.0 %") row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]] for row in [ row_name[i] + it for i, it in enumerate(statistic.get_common_stat()) ]: model_common_stat.add_row(row) self.table_common_stat = TableCanvas(self.frame_common_stat, model_common_stat, sort_enable=False) self.table_common_stat.createTableFrame() self.frame_common_stat.grid_forget() def init_detailed_stat(self, statistic, stat_count_row): self.frame_detailed_stat = Frame(self) self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W) self.model_ru_en = TableModel(stat_count_row, True) self.model_ru_en.add_column(_("clm_word"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_transcription"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_translate"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_cnt_suc"), typedata='number', align='right', max_val=u"999") self.model_ru_en.add_column(_("clm_cnt_err"), typedata='number', align='right', max_val=u"999") self.model_ru_en.add_column(_("clm_study_perсent"), typedata='percent', align='right', max_val=u"100.0 %") for row, word in statistic.get_ru_en(): self.model_ru_en.add_row(row, word) self.model_ru_en.sort(5, True) self.table_detailed_stat = TableCanvas( self.frame_detailed_stat, self.model_ru_en, sort_enable=True, callback=self.draw_callback, dbl_click_callback=self.rename_dlg) self.table_detailed_stat.createTableFrame() self.model_en_ru = TableModel(stat_count_row, True) self.model_en_ru.add_column(_("clm_word"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_transcription"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_translate"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_cnt_suc"), typedata='number', align='right') self.model_en_ru.add_column(_("clm_cnt_err"), typedata='number', align='right') self.model_en_ru.add_column(_("clm_study_perсent"), typedata='percent', align='right') for row, word in statistic.get_en_ru(): self.model_en_ru.add_row(row, word) self.model_en_ru.sort(5, True) for col in range(0, self.model_en_ru.get_column_count()): self.model_en_ru.get_column( col).width = self.model_ru_en.get_column(col).width def button_add(self, text, command): self.buttons.append( Button(self.frame_btn, text=text, command=command, borderwidth=2, default="normal")) ind = len(self.buttons) self.buttons[-1].grid(row=0, column=ind, sticky=N + S + E + W, pady=5, padx=3) def button_sel(self, cur_button): self.last_button = cur_button for i, it in enumerate(self.buttons): if i == cur_button: it.configure(relief="sunken") else: it.configure(relief="raised") self.update_idletasks() def init_window(self, (statistic, stat_count_row)): self.last_button = 0 self.buttons = [] self.frame_btn = Frame(self, borderwidth=2, relief=GROOVE) self.frame_btn.grid(row=0, column=0, sticky=N + S + E + W) Label(self.frame_btn, text="").grid(row=0, column=0) self.button_add(_("btn_ru_en"), self.show_ru_en) self.button_add(_("btn_en_ru"), self.show_en_ru) self.button_add(_("btn_common_stat"), self.show_common_stat) Label(self.frame_btn, text="").grid(row=0, column=4) self.frame_btn.grid_rowconfigure(0, weight=1) self.frame_btn.grid_columnconfigure(1, weight=1) self.frame_btn.grid_columnconfigure(2, weight=1) self.frame_btn.grid_columnconfigure(3, weight=1) self.init_common_stat(statistic) self.init_detailed_stat(statistic, stat_count_row) self.grid_rowconfigure(1, weight=1) self.grid_columnconfigure(0, weight=1) self.button_sel(0) self.show_ru_en()
def init_window(self): fnt_stat = Font(family="Arial", size=9) fnt_msg = Font(family="Arial", size=10, weight="bold") fnt_word = Font(family="Arial", size=14) fnt_transcription = Font(family="Arial", size=10) fnt_translate = Font(family="Arial", size=12) ######################################################## frm_stat = Frame(self, bg=clr_stat_frame, bd=5) frm_stat.pack(fill="both") Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, text=_("correct_incorrect")).pack(side="left") img = PhotoImage(file="info.gif") bt = Button(frm_stat, image=img, bg=clr_stat_frame, relief="flat", command=self.show_statistic) bt.image = img bt.pack(side="right") self.lbl_stat_error = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_error, borderwidth=0) self.lbl_stat_error.pack(side="right") self.lbl_stat_success = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_success, borderwidth=0) self.lbl_stat_success.pack(side="right") ######################################################## frm_word = Frame(self, bg=clr_word_frame, bd=5) frm_word.pack(fill="both") self.lbl_word = Label(frm_word, font=fnt_word, bg=clr_word_frame) self.lbl_word.pack() self.lbl_transcription = Label(frm_word, font=fnt_transcription, bg=clr_word_frame) self.lbl_transcription.pack() ######################################################## frm_answer = Frame(self, bg=clr_answer_frame, bd=15) frm_answer.pack(fill="both") frm_message = Frame(frm_answer, bg=clr_answer_frame) frm_message.pack(fill="both") self.lbl_result_msg = Label(frm_message, font=fnt_msg, bg=clr_answer_frame) self.lbl_result_msg.pack(side="left") self.lbl_correct_word = Label(frm_message, font=fnt_msg, bg=clr_answer_frame) self.lbl_correct_word.pack(side="left") self.lbl_correct_word_tr = Label(frm_message, font=fnt_transcription, bg=clr_answer_frame) self.lbl_correct_word_tr.pack(side="left") self.edit_translate = Entry(frm_answer, font=fnt_translate, width=30) self.edit_translate.pack(side="bottom") self.edit_translate.focus() self.bind("<Return>", self.on_check_translate) self.bind("<FocusIn>", lambda event: self.edit_translate.focus()) ######################################################## x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2 y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2 self.title(_("win_learning_english")) self.resizable(False, False) self.wm_geometry("+%d+%d" % (x, y)) self.protocol("WM_DELETE_WINDOW", self.on_destroy)
def set_repeat(self): self.lbl_result_msg["text"] = _("reiterate") self.lbl_result_msg["fg"] = clr_error
def set_statistic(self, stat): success_cnt, max_success, error_cnt = stat self.lbl_stat_success["text"] = "%i %s %i/" % (success_cnt, _("of"), max_success) self.lbl_stat_error["text"] = "%i" % error_cnt
def init_detailed_stat(self, statistic, stat_count_row): self.frame_detailed_stat = Frame(self) self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W) self.model_ru_en = TableModel(stat_count_row, True) self.model_ru_en.add_column(_("clm_word"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_transcription"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_translate"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_cnt_suc"), typedata='number', align='right', max_val=u"999") self.model_ru_en.add_column(_("clm_cnt_err"), typedata='number', align='right', max_val=u"999") self.model_ru_en.add_column(_("clm_study_perсent"), typedata='percent', align='right', max_val=u"100.0 %") for row, word in statistic.get_ru_en(): self.model_ru_en.add_row(row, word) self.model_ru_en.sort(5, True) self.table_detailed_stat = TableCanvas( self.frame_detailed_stat, self.model_ru_en, sort_enable=True, callback=self.draw_callback, dbl_click_callback=self.rename_dlg) self.table_detailed_stat.createTableFrame() self.model_en_ru = TableModel(stat_count_row, True) self.model_en_ru.add_column(_("clm_word"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_transcription"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_translate"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_cnt_suc"), typedata='number', align='right') self.model_en_ru.add_column(_("clm_cnt_err"), typedata='number', align='right') self.model_en_ru.add_column(_("clm_study_perсent"), typedata='percent', align='right') for row, word in statistic.get_en_ru(): self.model_en_ru.add_row(row, word) self.model_en_ru.sort(5, True) for col in range(0, self.model_en_ru.get_column_count()): self.model_en_ru.get_column( col).width = self.model_ru_en.get_column(col).width
def set_new_word(self): self.lbl_result_msg["text"] = _("lbl_new_word") self.lbl_result_msg["fg"] = clr_error
def show_critical_error(self, loc_res_msg): tkMessageBox.showerror(_("win_critical_error"), _(loc_res_msg))
def set_new_word(self, answer): self.lbl_result_msg["text"] = '%s: %s' % (_("lbl_new_word"), answer) self.lbl_result_msg["fg"] = clr_error
def init_window(self): # 12pt = 16px fnt_stat = Font(family="Arial", size=-12) # 9pt fnt_msg = Font(family="Arial", size=-13, weight="bold") # 10pt fnt_word = Font(family="Arial", size=-19) # 14pt fnt_transcription = Font(family="Arial", size=-13) # 10pt self.fnt_answer_normal = Font(family="Arial", size=-16) # 12pt self.fnt_answer_error = Font(family="Arial", size=-16, overstrike=1) # 12pt ######################################################## frm_stat = Frame(self, bg=clr_stat_frame, bd=5) frm_stat.pack(fill="both") Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, text=_("correct_incorrect")).pack(side="left") frm_btn = Frame(frm_stat, bg=clr_stat_frame) frm_btn.pack(side="right") img = stat_image() bt = Button(frm_btn, image=img, bg=clr_stat_frame, relief="flat", command=self.on_show_statistic_wnd) bt.image = img bt.pack(side="right") img = find_in_web_image() self.find_in_web_btn = Button(frm_btn, image=img, bg=clr_stat_frame, relief="flat", command=self.on_find_in_web) self.find_in_web_btn.image = img self.find_in_web_btn.pack(side="right") img = edit_image() self.edit_btn = Button(frm_btn, image=img, bg=clr_stat_frame, relief="flat", command=self.on_rename) self.edit_btn.image = img self.edit_btn.pack(side="right") self.lbl_stat_error = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_error, borderwidth=0) self.lbl_stat_error.pack(side="right") self.lbl_stat_success = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_success, borderwidth=0) self.lbl_stat_success.pack(side="right") ######################################################## frm_word = Frame(self, bg=clr_word_frame, bd=5) frm_word.pack(fill="both") self.lbl_word = Label(frm_word, font=fnt_word, bg=clr_word_frame) self.lbl_word.pack() self.lbl_transcription = Label(frm_word, font=fnt_transcription, bg=clr_word_frame) self.lbl_transcription.pack() ######################################################## frm_answer = Frame(self, bg=clr_answer_frame, bd=15) frm_answer.pack(fill="both") frm_message = Frame(frm_answer, bg=clr_answer_frame) frm_message.pack(fill="both") self.lbl_result_msg = Label(frm_message, font=fnt_msg, bg=clr_answer_frame) self.lbl_result_msg.pack(side="left") self.lbl_correct_word = Label(frm_message, font=fnt_msg, bg=clr_answer_frame) self.lbl_correct_word.pack(side="left") self.lbl_correct_word_tr = Label(frm_message, font=fnt_transcription, bg=clr_answer_frame) self.lbl_correct_word_tr.pack(side="left") self.edit_translate = Entry(frm_answer, width=35) self.edit_translate.pack(fill="both") self.edit_translate.focus() self.bind("<Return>", self.on_return) self.bind("<Control-Return>", self.on_rename) self.bind("<FocusIn>", lambda event: self.edit_translate.focus()) ######################################################## x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2 y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2 self.title(_("win_learning_english")) self.resizable(False, False) self.wm_geometry("+%d+%d" % (x, y)) self.protocol("WM_DELETE_WINDOW", self.on_destroy)
def init_detailed_stat(self, statistic, stat_count_row): self.frame_detailed_stat = Frame(self) self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W) self.model_ru_en = TableModel(stat_count_row, True) self.model_ru_en.add_column(_("clm_word"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_transcription"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_translate"), typedata='text', align='left') self.model_ru_en.add_column(_("clm_cnt_suc"), typedata='number', align='right', max_val=u"999") self.model_ru_en.add_column(_("clm_cnt_err"), typedata='number', align='right', max_val=u"999") self.model_ru_en.add_column(_("clm_pers_suc"), typedata='percent', align='right', max_val=u"100.0 %") self.model_ru_en.add_column(_("clm_state"), typedata='text', align='left', max_val=_("st_study") + u" ") for row in statistic.get_ru_en(): self.model_ru_en.add_row(row) self.model_ru_en.sort(6, False) self.table_detailed_stat = TableCanvas(self.frame_detailed_stat, self.model_ru_en, sort_enable=True, callback=self.draw_callback) self.table_detailed_stat.createTableFrame() self.model_en_ru = TableModel(stat_count_row, True) self.model_en_ru.add_column(_("clm_word"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_transcription"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_translate"), typedata='text', align='left') self.model_en_ru.add_column(_("clm_cnt_suc"), typedata='number', align='right') self.model_en_ru.add_column(_("clm_cnt_err"), typedata='number', align='right') self.model_en_ru.add_column(_("clm_pers_suc"), typedata='percent', align='right') self.model_en_ru.add_column(_("clm_state"), typedata='text', align='left') for row in statistic.get_en_ru(): self.model_en_ru.add_row(row) self.model_en_ru.sort(6, False) for col in range(0, self.model_en_ru.get_column_count()): self.model_en_ru.get_column(col).width = self.model_ru_en.get_column(col).width