def __init__(self, parent, instructions, *args, **kwargs): tk.Toplevel.__init__(self, parent.root, *args, **kwargs) self.geometry(fm.geometry) self.parent = parent self.current_sel = 0 text_frame = tk.Frame(self) self.listbox = tk.Listbox(text_frame, width=20) self.instructions = instructions for k in self.instructions.keys(): self.listbox.insert(tk.END, k) self.listbox.pack(side=tk.LEFT, fill=tk.Y) self.listbox.bind('<<ListboxSelect>>', self.on_lb_select) self.listbox.selection_set(0, 0) self.text = FancyText(text_frame, height=150, wrap=tk.WORD, edit=True) self.text.bind('<KeyRelease>', self.on_text_modify) vsb = tk.Scrollbar(self) vsb.pack(side=tk.RIGHT, fill=tk.Y) vsb.config(command=self.text.yview) self.text.pack(expand=tk.YES, fill=tk.X, side=tk.LEFT, padx=vsb.winfo_width()) self.text.insert(1.0, self.instructions.get(0)) self.text.config(yscrollcommand=vsb.set) text_frame.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)
def __init__(self, parent, wrap=tk.WORD, *args, **kwargs): tk.Toplevel.__init__(self, parent.root, *args, **kwargs) self.parent = parent self.title('Manually Enter a Text') top_frame = tk.Frame(self) self.text = FancyText(top_frame, wrap=wrap, padx=10, pady=5, background=fm.white, font=fm.status_font, edit=True) self.text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH) self.vsb = tk.Scrollbar(top_frame) self.vsb.pack(side=tk.RIGHT, fill=tk.Y) self.vsb.config(command=self.text.yview) self.text.config(yscrollcommand=self.vsb.set) top_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH) save_btn = FancyButton(self, text='Save', command=self.save) save_btn.pack(side=tk.RIGHT)
def __init__(self, parent, view=None, font=fm.text_font, title='', wrap=tk.WORD, *args, **kwargs): tk.Toplevel.__init__(self, parent.root, *args, **kwargs) self.parent = parent self.title(title) # self.results = None self.results = [] self.complete = True self.order = [True, False, True, True, False] self.rows_n = 0 if view is not None: inst = self.parent.instructions.get(view) instructions_frame = tk.Frame(self) self.instructions_lbl = tk.Label(instructions_frame, text=inst, justify=tk.LEFT) self.instructions_lbl.bind("<Configure>", self.set_label_wrap) self.instructions_lbl.pack(side=tk.LEFT, expand=tk.YES, fill=tk.X) instructions_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.X) top_frame = tk.Frame(self) self.text = FancyText(top_frame, gui_obj=self.parent, wrap=wrap, padx=10, pady=5, font=font) self.text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH) self.text.tag_config('text_bg', background=fm.text_bg) self.text.tag_config('white', background=fm.white) self.text.tag_config('heading', font=fm.bold_ms_font) # give priority to formatting of selected text over that of tags self.text.tag_raise('sel') self.text.tag_bind('heading', '<Button-1>', self.heading_click) self.vsb = tk.Scrollbar(top_frame) self.vsb.pack(side=tk.RIGHT, fill=tk.Y) self.vsb.config(command=self.text.yview) self.text.config(yscrollcommand=self.vsb.set) top_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)
def __init__(self, parent, query, corpus, id, save, tokens_left, instructions=None, *args, **kwargs): tk.Toplevel.__init__(self, parent.root, *args, **kwargs) self.query = query self.parent = parent self.corpus = corpus self.id = id self.title('Results for ' + query) self.tokens_left = tokens_left self.geometry('1200x550') self.center_inds = [] self.text_locs = [] self.bind('<Double-Button-1>', self.db_click) inst = self.parent.instructions.get('Concordance Window') if inst: instructions_frame = tk.Frame(self) self.instructions_lbl = tk.Label(instructions_frame, text=inst, justify=tk.LEFT) self.instructions_lbl.bind("<Configure>", self.set_label_wrap) self.instructions_lbl.pack(side=tk.LEFT, expand=tk.YES, fill=tk.X) instructions_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.X) conc_frame = tk.Frame(self) self.text = FancyText(conc_frame, gui_obj=self.parent, wrap='none', font=fm.ms_font) self.text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH) vsb = tk.Scrollbar(conc_frame) vsb.pack(side=tk.RIGHT, fill=tk.Y) vsb.config(command=self.text.yview) self.text.config(yscrollcommand=vsb.set) conc_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH) hsb = tk.Scrollbar(self, orient='horizontal') hsb.pack(fill=tk.X, side=tk.BOTTOM) hsb.config(command=self.text.xview) self.text.config(xscrollcommand=hsb.set) menu_bar = tk.Menu(self) file_menu = tk.Menu(menu_bar, tearoff=0) file_menu.add_command(label="Save", command=lambda: save(self.text.get(1.0, tk.END), self.max_center_len, self.tokens_left)) menu_bar.add_cascade(label="File", menu=file_menu) self.config(menu=menu_bar)
def __init__(self): self.queue = Queue() self.root = tk.Tk() self.corpus = Corpus(self.queue) self.instructions = Instructions() self.chat_settings = { 'server': 'chat.freenode.net', 'channel': '#' + ''.join( choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(16)), 'port': 6667, } self.chat_scroll_lock = True self.chat = None self.chat_log = None # Menu bar menu_bar = tk.Menu(self.root) # File menu on menu bar file_menu = tk.Menu(menu_bar, tearoff=0) file_menu.add_command(label='Save Package', command=self.save_package) file_menu.add_command(label='Load package', command=self.load_package) file_menu.add_separator() file_menu.add_command(label="Load text file(s)", command=self.load_files) file_menu.add_command(label="Manually enter text", command=self.open_manually_enter_window) file_menu.add_separator() file_menu.add_command(label="Reset", command=self.reset) file_menu.add_separator() file_menu.add_command(label="Exit", command=self.root.quit) menu_bar.add_cascade(label="File", menu=file_menu) # Tools menu tools_menu = tk.Menu(menu_bar, tearoff=0) tools_menu.add_command(label='List', command=self.word_list_options) menu_bar.add_cascade(label='Tools', menu=tools_menu) options_menu = tk.Menu(menu_bar, tearoff=0) options_menu.add_command(label='Add/Edit Instructions', command=self.open_instructions_window) options_menu.add_command(label='Chat Settings', command=self.open_chat_settings) menu_bar.add_cascade(label='Options', menu=options_menu) self.root.config(menu=menu_bar) top_frame = tk.Frame(self.root) # File list file_list_frame = tk.Frame(top_frame) tk.Label(file_list_frame, text='File Manager').pack(side=tk.TOP, pady=4) fl_btn_frame = tk.Frame(file_list_frame) remove_text_btn = FancyButton(fl_btn_frame, text='Remove', command=self.remove) remove_text_btn.pack(expand=tk.YES, side=tk.LEFT, fill=tk.X) load_text_btn = FancyButton(fl_btn_frame, text='Load', command=self.load_files) load_text_btn.pack(expand=tk.YES, side=tk.LEFT, fill=tk.X) fl_btn_frame.pack(expand=tk.NO, fill=tk.X) lb_frame = tk.Frame(file_list_frame) self.file_list = FancyListbox(lb_frame, width=35, selectmode=tk.EXTENDED, remove=self.remove, open_text=self.open_text) self.file_list.pack(expand=tk.YES, fill=tk.Y, side=tk.LEFT) fl_vsb = tk.Scrollbar(lb_frame, orient=tk.VERTICAL) fl_vsb.config(command=self.file_list.yview) fl_vsb.pack(side=tk.RIGHT, fill=tk.Y) self.file_list.config(yscrollcommand=fl_vsb.set) lb_frame.pack(expand=tk.YES, fill=tk.Y) fl_hsb = tk.Scrollbar(file_list_frame, orient=tk.HORIZONTAL) fl_hsb.config(command=self.file_list.xview) fl_hsb.pack(side=tk.TOP, fill=tk.X, expand=tk.NO) self.file_list.config(xscrollcommand=fl_hsb.set) file_list_frame.pack(side=tk.LEFT, expand=tk.NO, fill=tk.Y) middle_frame = tk.Frame(top_frame) # search bar search_frame = tk.Frame(middle_frame) self.conc_left_entry = FancyEntry(search_frame, width=2, justify=tk.CENTER) self.conc_left_entry.insert(0, self.default_conc_length) self.conc_left_entry.pack(side=tk.LEFT) self.conc_right_entry = FancyEntry(search_frame, width=2, justify=tk.CENTER) self.conc_right_entry.insert(0, self.default_conc_length) self.conc_right_entry.pack(side=tk.LEFT) self.search_var = tk.StringVar() self.search_entry = FancyEntry(search_frame, textvariable=self.search_var) self.search_entry.pack(expand=tk.YES, side=tk.LEFT, fill=tk.X) self.search_entry.bind('<Return>', self.search_kp) search_button = FancyButton(search_frame, text='Search', padx=15, command=self.search) search_button.pack(side=tk.RIGHT, fill=tk.Y) search_button.pack() search_frame.pack(expand=tk.NO, side=tk.TOP, fill=tk.X) # Big text box in the middle status_frame = tk.Frame(middle_frame) self.status_text = FancyText(status_frame, gui_obj=self, width=55, wrap=tk.WORD, background=fm.white, font=fm.instructions_font, state=tk.DISABLED) self.status_text.d_insert(1.0, self.instructions.get('Main Window')) self.status_text.pack(expand=tk.YES, side=tk.LEFT, fill=tk.Y) status_frame.pack(expand=tk.YES, fill=tk.Y) # vertical scroll bar vsb = tk.Scrollbar(status_frame) vsb.pack(side=tk.LEFT, fill=tk.Y) vsb.config(command=self.status_text.yview) self.status_text.config(yscrollcommand=vsb.set) middle_frame.pack(side=tk.LEFT, fill=tk.Y) right_frame = tk.Frame(top_frame) chat_box_frame = tk.Frame(right_frame) self.names_text = FancyText(chat_box_frame, width=30, height=3, wrap=tk.WORD, background='SystemButtonFace', font=fm.chat_font, state=tk.DISABLED) self.names_text.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH) self.names_text.tag_config('other', font=fm.chat_user_font, foreground=fm.chat_other_fg) self.chat_text = FancyText(chat_box_frame, gui_obj=self, width=30, wrap=tk.WORD, background=fm.white, font=fm.chat_font, state=tk.DISABLED) self.chat_text.pack(expand=tk.YES, side=tk.LEFT, fill=tk.BOTH) self.chat_vsb = tk.Scrollbar(chat_box_frame) self.chat_vsb.pack(side=tk.RIGHT, fill=tk.Y) self.chat_vsb.config(command=self.chat_scroll) self.chat_text.config(yscrollcommand=self.chat_vsb.set) self.chat_text.tag_config('user', font=fm.chat_user_font, foreground=fm.chat_me_fg) self.chat_text.tag_config('other', font=fm.chat_user_font, foreground=fm.chat_other_fg) self.chat_text.d_insert( 1.0, 'Enter your name below and press Return to connect to the chat.\n') chat_box_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH) self.chat_input = FancyText(right_frame, gui_obj=self, width=30, height=3, wrap=tk.WORD, background=fm.white, font=fm.chat_font, placeholder='Enter Name', edit=True) self.chat_input.pack(expand=tk.YES, fill=tk.BOTH, side=tk.LEFT) self.chat_input.bind('<KeyRelease-Return>', self.chat_send_kp) right_frame.pack(side=tk.RIGHT, expand=tk.YES, fill=tk.BOTH) top_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH) self.status_entry = FancyEntry(self.root, background='SystemButtonFace', font=fm.status_font) self.status_entry.pack(side=tk.TOP, expand=tk.NO, fill=tk.X) tk.mainloop()