class Solo_Client: def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#d9d9d9' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' _compcolor = '#d9d9d9' # X11 color: 'gray85' _ana1color = '#d9d9d9' # X11 color: 'gray85' _ana2color = '#d9d9d9' # X11 color: 'gray85' top.iconbitmap(r'icon.ico') top.geometry("346x463+655+389") top.title("Solo Client") top.configure(background="#d9d9d9") top.configure(highlightbackground="#d9d9d9") top.configure(highlightcolor="black") top.resizable(True, True) top.bind('<Return>', asend) self.menubar = Menu(top,font="TkMenuFont",bg=_bgcolor,fg=_fgcolor) top.configure(menu = self.menubar) self.Entry1 = Entry(top) self.Entry1.place(relx=0.03, rely=0.91, relheight=0.06, relwidth=0.71) self.Entry1.configure(background="white") self.Entry1.configure(disabledforeground="#a3a3a3") self.Entry1.configure(font="TkFixedFont") self.Entry1.configure(foreground="#000000") self.Entry1.configure(highlightbackground="#d9d9d9") self.Entry1.configure(highlightcolor="black") self.Entry1.configure(insertbackground="black") self.Entry1.configure(selectbackground="#c4c4c4") self.Entry1.configure(selectforeground="black") self.Button1 = Button(top) self.Button1.place(relx=0.78, rely=0.91, height=34, width=67) self.Button1.configure(activebackground="#d9d9d9") self.Button1.configure(activeforeground="#000000") self.Button1.configure(background="#d9d9d9") self.Button1.configure(disabledforeground="#a3a3a3") self.Button1.configure(foreground="#000000") self.Button1.configure(highlightbackground="#d9d9d9") self.Button1.configure(highlightcolor="black") self.Button1.configure(pady="0") self.Button1.configure(text='''Send''') self.Button1.configure(command = asend) self.Text1 = ScrolledText(top) self.Text1.place(relx=0.03, rely=0.02, relheight=0.87, relwidth=0.93) self.Text1.configure(background="white") self.Text1.configure(font="TkTextFont") self.Text1.configure(foreground="black") self.Text1.configure(highlightbackground="#d9d9d9") self.Text1.configure(highlightcolor="black") self.Text1.configure(insertbackground="black") self.Text1.configure(insertborderwidth="3") self.Text1.configure(selectbackground="#c4c4c4") self.Text1.configure(selectforeground="black") self.Text1.configure(undo="1") self.Text1.configure(width=10) self.Text1.configure(wrap=NONE)
def __init__(self, master): frame = tkinter.Frame(master,width=600,height=220,bg='blue') frame.grid(row=0, column=0) frame.pack() #文件标签 self.labelFile = tkinter.Label(frame, text='文件', font=('黑体'), justify='left', ) self.labelFile.place(x=65, y=30) #文件路径输入文本框 #绑定变量 self.fileVar = tkinter.Variable() self.fileEntry = tkinter.Entry(frame,textvariable=self.fileVar, width=45) self.fileEntry.place(x=140,y=30) #打开/浏览文件按键 self.buttonOpenFile = tkinter.Button(frame, text='打开', command=self.openFile) self.buttonOpenFile.place(x=480, y=30) #图片标签 self.labelPic = tkinter.Label(frame, text='图片', font=('黑体'), justify='left', ) self.labelPic.place(x=65, y=90) #图片路径输入文本框 #绑定变量 self.picVar = tkinter.Variable() self.picEntry = tkinter.Entry(frame,textvariable=self.picVar, width=45) self.picEntry.place(x=140,y=90) #打开/浏览图片按键 self.buttonOpenPic = tkinter.Button(frame, text='打开', command=self.openPic) self.buttonOpenPic.place(x=480, y=90) #过滤词标签 self.labelPic = tkinter.Label(frame, text='过滤词', font=('黑体'), justify='left', ) self.labelPic.place(x=50, y=150) #带滚动条的文本框,用于显示多行过滤词 st = ScrolledText(frame, width=33, height=3, font=('黑体', 13)) st.place(x=140,y=150) #添加过滤词按键 self.buttonAddWords = tkinter.Button(frame, text='添加', command=self.addWords) self.buttonAddWords.place(x=480, y=150)
def build_form(window_param, launch_callback): """ This function builds the graphics of the TKinter window :param window_param: The window object :param launch_callback: a function to be called when clicking "start" :return: None """ global chosen_file_label, log_box, status_label window = window_param # Title title = Label(window, text=PROG_NAME, font=TITLE_FONT) title.place(relx=0.5, y=TITLE_Y, anchor=CENTER) # Choose file title choose_file_title = Label(window, text=CHOOSE_FILE_TITLE, font=REGULAR_FONT) choose_file_title.place(x=PADD_LEFT, y=CHOOSE_FILE_Y) # Choose file button choose_file_button = Button(window, text=CHOOSE_FILE_BUTTON_TEXT, command=handle_choose_file_click) choose_file_button.place(x=CHOOSE_FILE_BUTTON_X, y=CHOOSE_FILE_Y) # Chosen file label chosen_file_label = Label(window, text=SELECTED_PREFIX + DEFAULT_SELECTED_FILE, font=REGULAR_FONT) chosen_file_label.place(x=PADD_LEFT, y=CHOSEN_FILE_LABEL_Y) # Log title log_title = Label(window, text=LOG_TITLE, font=REGULAR_FONT) log_title.place(x=PADD_LEFT, y=LOG_TITLE_Y) # Log text box log_box = ScrolledText(window, width=LOG_BOX_WIDTH, height=LOG_BOX_HEIGHT) log_box.place(x=PADD_LEFT, y=LOG_BOX_Y) # Status status_label = Label(window, text=STATUS_PREFIX + INIT_STATUS, font=REGULAR_FONT) status_label.place(x=PADD_LEFT, y=STATUS_Y) # Start button start_button = Button(window, text=START_BUTTON_TEXT, command=launch_callback, font=REGULAR_FONT) start_button.place(relx=0.5, y=START_BUTTON_Y, anchor=CENTER)
class Run_UI: def __init__(self,root): #creating the title and window dimensions root.iconbitmap('Images\img.ico') root.title("Never Miss Class") root.maxsize(width=450,height=300) root.minsize(width=450,height=300) centre_screen(root,225,150) #creating a canvas to place widgets on self.main_canvas = Canvas(root,width = 450, height =300,highlightthickness=0) self.main_canvas.pack() self.text_field = ScrolledText(self.main_canvas,width=52,height=18) #You have to set the state to normal to make changes to it. Disabling it makes it uneditable self.text_field.configure(state='normal') #deleting anything previously in the text field self.text_field.delete(1.0,END) #putting stuff in the text field. Works just like appending onto a list. self.text_field.insert(END, "The program is now running in the background. \n") #open the current day's database file today = datetime.datetime.now().weekday() weekdays = {0:"Monday",1:"Tuesday",2:"Wednesday",3:"Thursday",4:"Friday"} f = open(weekdays[today]+".txt", "r") classes = [] for line in f: classes.append(line.strip("\n").split("|")) f.close() # sort the 2d list by class times, and sort the class names and URLs # in the same way so the times and names stay together insert_sort(classes[1], classes[0], classes[2]) # set up default names for any classes the user has not named for i in range(len(classes[2])): if classes[2][i] == "": classes[2][i] = "Class " + str(i) # print out the sorted schedule self.text_field.insert(END, "Here is "+weekdays[today]+"'s schedule: \n") self.text_field.insert(END, ("{0:25}{1:>10}").format("Class Name", "Class Time \n")) self.text_field.insert(END, "-" * 35 + "\n") # iterate through the list of URLs for i in range(len(classes[0])): # for every non-empty url, print the associated name and date of the class if classes[0][i] != "": self.text_field.insert(END, ("{0:25}{1:>10}").format(classes[2][i], classes[1][i] + "\n")) # disable the text field after writing to it self.text_field.configure(state='disabled') self.text_field.place(x=5,y=5)
def Design_Tab(): textExecutionInput = Label(tab,text="English Text",font=("Arial", 10, "bold")) textExecutionInput.place(x=((FIRST_COL_Y+(0*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(0*ROW_INC))/REF_ROW_COUNT)*b) textExecutionOutput = Label(tab,text="Unicode",font=("Arial", 10, "bold")) textExecutionOutput.place(x=((FIRST_COL_Y+(2.75*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(0*ROW_INC))/REF_ROW_COUNT)*b) buttonHelp = Button(tab, text='Unicode Help', width="15",command=lambda: ShowUnicodeHelp(ChosenLanguage.get(), textOutputSection)) buttonHelp.place(x=((FIRST_COL_Y+(1*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(0*ROW_INC))/REF_ROW_COUNT)*b) ChosenLanguage = IntVar() rbTamil = Radiobutton(tab, text="Tamil", variable=ChosenLanguage, value=TAMIL_FLAG,) #command=lambda: ChangeTab(TAMIL_FLAG)) rbTamil.place(x=((FIRST_COL_Y+(1.5*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(0*ROW_INC))/REF_ROW_COUNT)*b) rbMalayalam = Radiobutton(tab, text="Malayalam", variable=ChosenLanguage, value=MALAYALAM_FLAG,) #command=lambda: ChangeTab(MALAYALAM_FLAG)) rbMalayalam.place(x=((FIRST_COL_Y+(2.0*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(0*ROW_INC))/REF_ROW_COUNT)*b) ChosenLanguage.set(-1) buttonSaveCodeasKal = Button(tab, text='Save English text as .txt file', width="25",command=lambda: SaveInputasText(textCommandSection)) buttonSaveCodeasKal.place(x=((FIRST_COL_Y+(0*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(1*ROW_INC))/REF_ROW_COUNT)*b) buttonConvertToUnicode = Button(tab, text='Convert Code to Unicode', width="25",command=lambda: ConvertToUnicode(textCommandSection, ChosenLanguage.get(), textOutputSection )) buttonConvertToUnicode.place(x=((FIRST_COL_Y+(1*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(1*ROW_INC))/REF_ROW_COUNT)*b) buttonClear = Button(tab, text='Clear', width="6",command=lambda: ClearCommands(textCommandSection, textOutputSection)) buttonClear.place(x=((FIRST_COL_Y+(2*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(1*ROW_INC))/REF_ROW_COUNT)*b) buttonOutputasTxt = Button(tab, text='Save Unicode text as .txt file', width="25",command=lambda: SaveOutputasText(textOutputSection)) buttonOutputasTxt.place(x=((FIRST_COL_Y+(2.75*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(1*ROW_INC))/REF_ROW_COUNT)*b) textCommandSection = ScrolledText(tab, undo=True, width=a/21, height=b/30) textCommandSection['font'] = ('consolas', '12') textCommandSection.place(x=((FIRST_COL_Y+(0*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(2*ROW_INC))/REF_ROW_COUNT)*b) textOutputSection = ScrolledText(tab, undo=True, width=a/21, height=b/30) textOutputSection['font'] = ('consolas', '12') textOutputSection.place(x=((FIRST_COL_Y+(2.75*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(2*ROW_INC))/REF_ROW_COUNT)*b) buttonAbout = Button(tab, text='About', width="10",command=lambda: messageShow('Info', '*****@*****.**')) buttonAbout.place(x=((FIRST_COL_Y+(0*COL_INC))/REF_COL_COUNT)*a,y=((FIRST_COL_X+(16*ROW_INC))/REF_ROW_COUNT)*b) textCommandSection.focus() return None
class NoteCreate(Toplevel): """ Create Note page """ def __init__(self): Toplevel.__init__(self) self.bg_page = PhotoImage(file="Image/note_bg1.gif") self.favorite_logo = PhotoImage(file="Image/favorite2.gif") def note_page(self, text_title, text_note, favorite): """Display a Note when add new note or edit note""" def add_destroy(): """add new data and destroy current window""" message = tkMessageBox.showinfo('Status', 'Complete') add_data(text_title, text_note, date(), favorite) self.destroy() self.background = Label(self, image=self.bg_page) self.new_note = Label(self, text=text_title, bg='#efe9dc', fg='#f46b2f', font=('AngsanaUPC', 18, 'bold')) self.txt = ScrolledText(self, width=44, height=13, bg='#efe9dc',\ font=('AngsanaUPC', 14), relief=FLAT) self.txt.insert('1.0', text_note) self.txt.config(state='disable') self.ok = Button(self, text='Ok', bg='#02d602', relief=FLAT, width=10, fg='white', font=('Arial', 10, 'bold'), command=add_destroy, activebackground='#49B203', activeforeground='white') self.cancel = Button(self, text='Cancel', bg='#a0a0a0', relief=FLAT, width=10, fg='white', font=('Arial', 10, 'bold'), activebackground='#838483', activeforeground= 'white', command=self.destroy) self.background.place(x=0, y=0) self.new_note.place(x=30, y=50) self.txt.place(x=25, y=100) self.ok.place(x=80, y=455) self.cancel.place(x=190, y=455) if favorite == 1: self.favor = Label(self, image=self.favorite_logo, bg='#efe9dc') self.favor.place(x=266, y=40) self.bind("<Button-1>", self.flat) def flat(self, event): """Event widget flat""" event.widget.config(relief=FLAT)
class LD_GUI(Frame): def __init__(self, parent): Frame.__init__(self, master=parent) parent.title('Liar\'s Dice') self.canvas = Canvas(self, width=550, height=500) self.canvas.pack(fill='both', expand = True) self.canvas.place(x=0, y=0) self.bid_logs = ScrolledText(self, undo=True, width=100, height = 100) self.bid_logs.pack(fill='both', expand = True) self.bid_logs['font'] = ('consolas', '12') self.bid_logs.place(x=350, y=0) self.input_box = Text(self, undo=True, width=100, height=100) self.input_box.pack(fill='both', expand = True) self.input_box['font'] = ('consolas', '12') self.input_box.place(x=350, y=450) self.pack(fill='both', expand = True) self.insert_to_log() def insert_to_log(self): self.bid_logs.insert(tki.INSERT, 'HI!') self.input_box.insert(tki.INSERT, 'OK') def initGame(self): try: self.idot = Image.open("dot.png") self.dot = ImageTk.PhotoImage(self.idot) self.ihead = Image.open("head.png") self.head = ImageTk.PhotoImage(self.ihead) self.iapple = Image.open("apple.png") self.apple = ImageTk.PhotoImage(self.iapple) except IOError, e: print e sys.exit(1) self.createObjects() self.locateApple() self.bind_all("<Key>", self.onKeyPressed) self.after(DELAY, self.onTimer)
class LD_GUI(Frame): def __init__(self, parent): Frame.__init__(self, master=parent) parent.title('Liar\'s Dice') self.canvas = Canvas(self, width=550, height=500) self.canvas.pack(fill='both', expand=True) self.canvas.place(x=0, y=0) self.bid_logs = ScrolledText(self, undo=True, width=100, height=100) self.bid_logs.pack(fill='both', expand=True) self.bid_logs['font'] = ('consolas', '12') self.bid_logs.place(x=350, y=0) self.input_box = Text(self, undo=True, width=100, height=100) self.input_box.pack(fill='both', expand=True) self.input_box['font'] = ('consolas', '12') self.input_box.place(x=350, y=450) self.pack(fill='both', expand=True) self.insert_to_log() def insert_to_log(self): self.bid_logs.insert(tki.INSERT, 'HI!') self.input_box.insert(tki.INSERT, 'OK') def initGame(self): try: self.idot = Image.open("dot.png") self.dot = ImageTk.PhotoImage(self.idot) self.ihead = Image.open("head.png") self.head = ImageTk.PhotoImage(self.ihead) self.iapple = Image.open("apple.png") self.apple = ImageTk.PhotoImage(self.iapple) except IOError, e: print e sys.exit(1) self.createObjects() self.locateApple() self.bind_all("<Key>", self.onKeyPressed) self.after(DELAY, self.onTimer)
class MainApp(Tk): """ Main page """ def __init__(self): Tk.__init__(self) self.find_b = PhotoImage(file="Image/Find_button.gif") self.logo = PhotoImage(file='Image/logo_app.gif') self.find_b2 = PhotoImage(file='Image/find_b2.gif') self.date = date() self.var = IntVar() def window(self): """Display Main window""" self.header = Frame(self, width=450, height=65, bg='#1E90FF') self.logo_name = Label(self.header, image=self.logo, bg='#1E90FF') self.datetime = Label(self, text=self.date) self.title_name = Label(self, text="Title", font=('Arial', 12,)) self.title_box = Entry(self, width = 58, bg='white', relief=FLAT, font=('AngsanaUPC', 15)) self.note_text = Label(self, text="Your Note", font=('Arial', 12,)) self.note_box = ScrolledText(self, font=('AngsanaUPC', 14), width=65, relief=FLAT, bg='white', height=9) self.check = Checkbutton(self, text='Favorite', bg='#FEFF92', variable=self.var, activebackground='#FEFF92', width=55, justify='left') self.add_note = Button(self, width=45, text="Add Note", bg='green', relief=FLAT, font=('Arial', 11, 'bold') , command=self.create_note, fg='white', activebackground='#13AA02', activeforeground='white') self.find_note = Button(self.header, image=self.find_b, relief=FLAT, bg='gray', font=('Arial', 13, 'bold') , command=self.find_notes, width=68, height=59, activebackground='#1E90FF') self.all = Button(self, width=31, height=2, fg='white', text="Note Storage", bg='#009cff', relief=FLAT, activeforeground='white', font=('Arial', 16, 'bold'), command=self.note_storage, activebackground='#0069C6') self.last = Frame(self, bg='#1E90FF', width=450, height=25) self.fac = Label(self.last, fg='white', bg='#1E90FF', text="Faculty of Information Technology, KMITL") self.header.place(x=0, y=0) self.logo_name.place(x=15, y=5) self.datetime.place(x=325, y=75) self.title_name.place(x=20, y=80) self.title_box.place(x=20, y=110) self.note_text.place(x=20, y=150) self.note_box.place(x=20, y=185) self.check.place(x=20, y=423) self.add_note.place(x=20, y=457) self.find_note.place(x=376, y=0) self.all.place(x=20, y=500) self.last.place(x=0, y=575) self.fac.place(x=110, y=3) self.bind("<Button-1>", self.flat) self.find_note.bind("<Button-1>", self.find_press) self.find_note.bind("<ButtonRelease-1>", self.find_release) def note_storage(self): """Create Note Storage page""" note_store = NoteStorage() note_store.geometry('450x600+450+90') note_store.title('Note Storage') note_store.resizable(width=False, height=False) note_store.all_note() def create_note(self): """Create new note page""" title_name = self.title_box.get() note_text = self.note_box.get('1.0', END) favorite = self.var.get() count = 0 for i in get_data(): if title_name == i: break else: count += 1 if title_name != '' and note_text != '' and len(title_name) <= 30: if count != len(get_data()): ask = tkMessageBox.askquestion\ ("Replace note", "Are you want to replace?", icon="warning") if ask == 'yes': self.title_box.delete(0, END) self.note_box.delete('1.0', END) note_page = NoteCreate() note_page.geometry('350x500+500+150') note_page.title('New note' + ' ' + ':' + ' ' + title_name) note_page.resizable(width=False, height=False) note_page.note_page(title_name, note_text, favorite) else: self.title_box.delete(0, END) self.note_box.delete('1.0', END) note_page = NoteCreate() note_page.geometry('350x500+500+150') note_page.title('New note' + ' ' + ':' + ' ' + title_name) note_page.resizable(width=False, height=False) note_page.note_page(title_name, note_text, favorite) elif len(title_name) > 30: error = tkMessageBox.showerror('Error', 'Your title is too long!') else: error = tkMessageBox.showerror('Error', 'Please input your note!') def find_notes(self): """Create find note page""" find = Findpage() find.geometry('400x500+475+145') find.resizable(width=False, height=False) find.title('Find your note') def flat(self, event): """Event widget flat""" event.widget.config(relief=FLAT) def find_press(self, event): """Event button press""" self.find_note.config(image=self.find_b2) def find_release(self, event): """Event button release""" self.find_note.config(image=self.find_b)
"S/W":"0", "USIM":"1", "DISABLED":"0", "ENABLED":"1", "Determine Mode Automatically":"4" } try: main=Tk() main.title("MBN CHECKING") main.geometry("600x800") icon=PhotoImage(file="icon5.gif") main.tk.call("wm",'iconphoto',main._w,icon) output= ScrolledText(main,width=82,height=50,background="white",undo=True) output.pack(expand=True,fill='both') output.place(x=0,y=100) b9 = Button(main, width=15, text="Run from PLMN list", command=plmn_list_run) b9.place(x=20, y=40) b9.config(relief=RAISED) main.mainloop() except Exception as ex: template = "An exception of type {0} occurred. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print message logger.critical("This is an exception" + str(message)+ "\n\n")
MESSAGE = Entry( top , width = 50 ) # Entry to type the message to send DISPLAY = ScrolledText(top, height = 15 , width = 50 ) # Display the Message recieved in the Scrolled Tet Widget LIST = Listbox(top) # List box to print the people available on the server CANVAS = Canvas(top , height = 200 , width = 150 , bg = "white" ) # Canvas to Draw some pictures LIST.insert(1,"\tList of Users") # Insert the List of users field in the List Box RESET = Button( top, text = "RESET" , command = clear_canvas ) # Button to reset the canvas DETAILS = Listbox(top) DETAILS.insert(1,"SERVER IP : " + host ) DETAILS.insert(2,"SERVER PORT : " + str(port) ) DETAILS.insert(3,"NICK NAME IS : " + nickname ) CANVAS.grid(column=0, row=0, sticky=(N, W, E, S)) # Declaring the Canvas Grid CANVAS.bind("<Button-1>", xy) # Binding mouse click to the xy function CANVAS.bind("<B1-Motion>", addLine) # Binding the mouse drag with addLine function C_B.place( x = 40 , y = 400 , width = 100) # Placing the widgets properly HOST.place( x = 140 , y = 400 , width = 100 ) PORT.place( x = 240 , y = 400 , width = 100 ) NICK.place( x = 340 , y = 400 , width = 100 ) SEND.place( x = 440 , y = 300 , width = 100 ) DISCONNECT.place( x = 440 , y = 400 , width = 100 ) MESSAGE.place( x = 40 , y = 300 ) DISPLAY.place( x = 40 , y = 40 ) LIST.place( x = 580 , y = 40 , width = 280 , height = 200) CANVAS.pack( expand = YES, fill = BOTH ) CANVAS.place( x = 880 , y = 40 , width = 400 , height = 400 ) RESET.place( x = 880 , y = 450 , width = 400) DETAILS.place( x = 580 , y = 300 , width = 280 , height = 140 ) top.mainloop() # Running the window in a loop
class Room(Toplevel): __client_sock = None __user_name = None __room_name = None __main_frame = None __top_frame = None __exit_room = False def __init__(self, client, room_name, main_frame, top_frame): Toplevel.__init__(self) self['background'] = 'grey' self.protocol('WM_DELETE_WINDOW', self.close_room) self.__user_name = main_frame.get_user_name() self.title("Room Name:" + room_name) self.__room_name = room_name self.configure_GUI() self.__client_sock = client self.__top_frame = top_frame self.__main_frame = main_frame self.__main_frame.add_new_room(self.__room_name, self) self.withdraw() self.mainloop() def show_room(self): self.__top_frame.withdraw() self.deiconify() def close_room(self): self.withdraw() def configure_GUI(self): # main window bg_color = '#208090' self['bg'] = bg_color self.geometry("400x500+520+500") self.resizable(width=True, height=True) self.frm_top = Frame(self, width=380, height=250) self.frm_mid = Frame(self, width=380, height=150) self.frm_btm = Frame(self, width=380, height=30) self.frm_btm['bg'] = bg_color self.label_msg_list = Label(self, justify=LEFT, text=u"""消息列表""") self.label_user_name = Label(self, justify=LEFT, text=self.__user_name) self.text_msg_List = ScrolledText(self.frm_top, borderwidth=1, highlightthickness=0, relief='flat', bg='#fffff0') self.text_msg_List.tag_config('userColor', foreground='red') self.text_msg_List.place(x=0, y=0, width=380, height=250) self.text_client_msg = ScrolledText(self.frm_mid) self.text_client_msg.grid(row=0, column=0) self.button_send_msg = Button(self.frm_btm, text='发送消息', command=self.__send_msg_btn_cmd) self.button_send_msg.place(x=0, y=0, width=100, height=30) self.button_exit_room = Button(self.frm_btm, text='退出房间', command=self.__exit_room_btn_cmd) self.button_exit_room.place(x=280, y=0, width=100, height=30) self.label_msg_list.grid(row=0, column=0, padx=2, pady=2, sticky=W) self.frm_top.grid(row=1, column=0, padx=2, pady=2) self.label_user_name.grid(row=2, column=0, padx=2, pady=2, sticky=W) self.frm_mid.grid( row=3, column=0, padx=2, pady=2, ) self.frm_btm.grid( row=4, column=0, padx=2, pady=2, ) self.frm_top.grid_propagate(0) self.frm_mid.grid_propagate(0) self.frm_btm.grid_propagate(0) def destroy_room(self): self.destroy() def query_room_user_name(self): msg = {'roomName': self.__room_name} data = package_sys_msg("SysRoomUserNameRequest", msg) self.__client_sock.append_to_msg_sending_queue(data) def __exit_room_btn_cmd(self): self.__exit_room = True msg = {'roomName': self.__room_name} data = package_sys_msg("SysExitRoomRequest", msg) self.__client_sock.append_to_msg_sending_queue(data) def __send_msg_btn_cmd(self): if self.__exit_room: return usr_msg = self.text_client_msg.get('0.0', END) self.display_new_msg(self.__user_name, usr_msg, 'userColor') self.text_client_msg.delete('0.0', END) data = package_room_chat_msg(self.__user_name, self.__room_name, usr_msg) self.__client_sock.append_to_msg_sending_queue(data) def display_new_msg(self, user_name, msg, config=''): self.text_msg_List['state'] = 'normal' msg_time = time.strftime(" %Y-%m-%d %H:%M:%S", time.localtime()) + '\n' self.text_msg_List.insert(END, user_name + ': ' + msg_time + msg + '\n', config) self.text_msg_List['state'] = 'disabled'
class gui: def __init__(self): self.master = Tk() self.master.geometry("800x600+100+10") self.master.title("WIReS - Web Information Retrieval System") self.master.configure(background='white') self.master.resizable(width=FALSE, height=FALSE) ######################################################################################################## def guimain(self): global query query = StringVar(None) def devs(): tkMessageBox.showinfo("DEVELOPERS", '''BS COMPUTER SCIENCE 302 CAVITE STATE UNIVERSITY - ROSARIO CAMPUS Lamberto A. Bruno. Jr. Jomari R. Iringan ''') def help(): tkMessageBox.showinfo("HELP", '''CONTACT US: Bruno ( 0905-511-9881 ) Joms ( 0906-870-2976 ) EMAIL US: [email protected] ''') def priv(): tkMessageBox.showinfo("PRIVACY", '''For privacy terms and policies please see https://www.google.com/policies/privacy/ ''') def clearBtn(): self.searchEntry.delete(0,END) self.searchEntry.focus_set() return self.label1 = Label(self.master, text="WIReS", font=('Impact',70),bg='white') self.label2 = Label(self.master, text=" SEARCH ENGINE", bg ='#008080', fg='white', font=('arial',7)) self.lineLabel = Label(self.master,text="____________________________",fg='red',bg='red', font =('arial',7)) self.helpBtn = Button(self.master, text="HELP", font=('Courier',10),command = help) self.privBtn = Button(self.master, text="PRIVACY", font=('Courier',10),command = priv) self.devsBtn = Button(self.master, text="DEVS", font=('Courier',10),command = devs) self.searchEntry = Entry(self.master, width='50', relief='groove', borderwidth='5', font=('Calibri',15), textvariable=query) self.searchButton = Button(self.master, text="SEARCH!", width='30') self.clearButton = Button(self.master, text="CLEAR FIELD", command = clearBtn) #locs self.label1.place(x=300,y=150) self.label2.place(x=455,y=250) self.lineLabel.place(x=310,y=250) self.searchEntry.place(x=180,y=320) self.searchButton.place(x=400,y=400) self.clearButton.place(x=250, y=400) self.devsBtn.place(x=690,y=570) self.helpBtn.place(x=738,y=570) self.privBtn.place(x=618, y=570) self.searchEntry.focus_set() self.searchButton.bind("<Button-1>",self.searchBtn) self.searchEntry.bind("<Return>", self.searchBtn) def searchBtn(self, event): try: global xTime global query xTime = StringVar() query = StringVar(None) search_ = Search() query = self.searchEntry.get() if query not in (None, '', ' '): start_time = time.time() global title_url title_url = [None] raw = search_.fetch_url(query) title_url = search_.process_url(raw) self.master.withdraw() xTime = (time.time() - start_time) self.guiresults() else: tkMessageBox.showinfo('Info', 'You must put a keyword') except Exception as e: tkMessageBox.showinfo('Info', 'No Internet Connection Try Again Later') exit() #################### def guiresults(self): global q_String q_String = StringVar() graph = Graph() html_parse = htmlParser() def showGraph(): raws = StringVar() raws = self.result_label.get(1.0, END) graph.plot_word(raws) def showPos(): raws = StringVar() raws = self.result_label.get(1.0, END) graph.plot_pos(raws) def clearBtn1(): self.searchEntry1.delete(0,END) self.searchEntry1.focus_set() return start_time = time.time() self.masters = Tk() self.masters.geometry("1100x700+100+10") self.masters.title("WIReS - Web Information Retrieval System") self.masters.configure(background='white') self.masters.resizable(width=FALSE, height=FALSE) self.searchEntry1 = Entry(self.masters, width='50', relief='groove', borderwidth='5', font=('Calibri',15)) self.searchButton = Button(self.masters, text="SEARCH!", width='25') self.clearButton1 = Button(self.masters, text="CLEAR FIELD", width='25',command = clearBtn1) self.labelss = Label(self.masters, text="SEARCH RESULTS:", bg ='#008080', fg='white', font=('arial',10)) self.timeLabel = Label(self.masters, text="SEARCH COMPLETED AT ", font=('arial',8)) self.resultframe = LabelFrame(self.masters,text="PAGE RESULT",height=520, width=990,relief = "groove", bg ="white") self.resultframe1 = LabelFrame(self.masters,height=540, width=990,relief = "groove", bg ="white") self.result_label = ScrolledText(self.resultframe,width = 120, height = 32,bg = 'white', undo = True) self.graphButton = Button(self.masters, text="WORD OCCURENCE(GRAPH)", width='25',command = showGraph) self.posButton = Button(self.masters, text="PART OF SPEECH(GRAPH)", width='25', command = showPos) #URL self.labelres1 = Label(self.resultframe1, text = title_url[0][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres1= Label(self.resultframe1, text = title_url[0][1], fg="blue", cursor="hand2", bg="white") self.labelres2 = Label(self.resultframe1, text = title_url[1][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres2 = Label(self.resultframe1, text = title_url[1][1], fg="blue", cursor="hand2", bg="white") self.labelres3 = Label(self.resultframe1, text = title_url[2][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres3 = Label(self.resultframe1, text = title_url[2][1], fg="blue", cursor="hand2", bg="white") self.labelres4 = Label(self.resultframe1, text = title_url[3][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres4 = Label(self.resultframe1, text = title_url[3][1], fg="blue", cursor="hand2", bg="white") self.labelres5 = Label(self.resultframe1, text = title_url[4][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres5 = Label(self.resultframe1, text = title_url[4][1], fg="blue", cursor="hand2", bg="white") self.labelres6 = Label(self.resultframe1, text = title_url[5][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres6 = Label(self.resultframe1, text = title_url[5][1], fg="blue", cursor="hand2", bg="white") self.labelres7 = Label(self.resultframe1, text = title_url[6][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres7 = Label(self.resultframe1, text = title_url[6][1], fg="blue", cursor="hand2", bg="white") self.labelres8 = Label(self.resultframe1, text = title_url[7][0], font=('arial 13 bold'), bg="white", cursor="hand2") self.linkres8 = Label(self.resultframe1, text = title_url[7][1], fg="blue", cursor="hand2", bg="white") #gui2 loc self.resultframe1.place(x=15,y=80) self.searchEntry1.place(x=15,y=15) self.searchButton.place(x=550,y=18) self.labelss.place(x=15,y=60) self.timeLabel.place(x=15,y=630) self.labelres1.place(x=1,y=30) self.linkres1.place(x=5,y=60) self.labelres2.place(x=1,y=90) self.linkres2.place(x=5,y=120) self.labelres3.place(x=1,y=150) self.linkres3.place(x=5,y=180) self.labelres4.place(x=1,y=210) self.linkres4.place(x=5,y=240) self.labelres5.place(x=1,y=270) self.linkres5.place(x=5,y=300) self.labelres6.place(x=1,y=330) self.linkres6.place(x=5,y=360) self.labelres7.place(x=1,y=390) self.linkres7.place(x=5,y=420) self.labelres8.place(x=1,y=450) self.linkres8.place(x=5,y=480) self.clearButton1.place(x=800,y=18) self.searchEntry1.insert(END,query) self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (xTime), font=('arial',8)) self.timeLabelres.place(x=150,y=630) def graphloc(): self.graphButton.place(x = 550, y=50) self.posButton.place(x = 800, y=50) #eventfunc def callback1(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[0][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback2(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[1][1])) self.resultframe1.destroy() self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback3(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[2][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback4(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[3][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback5(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[4][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback6(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[5][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback7(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[6][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def callback8(event): start_time = time.time() raw = html_parse.clean_html(html_parse.url_opener(title_url[7][1])) self.resultframe1.destroy() self.resultframe.place(x=15,y=80) self.result_label.place(x = 1, y = 1) self.result_label.insert(END,raw) self.result_label.configure(state = 'disabled') self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8)) self.timeLabelres.place(x=150,y=630) graphloc() def searchAction(event): try: global query global mTime mTime = StringVar(None) query = StringVar(None) search_ = Search() query = self.searchEntry1.get() if query not in (None, '', ' '): start_time = time.time() global title_url title_url = [None] raw = search_.fetch_url(query) title_url = search_.process_url(raw) self.masters.withdraw() mTime = (time.time() - start_time) self.guiresults() self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (mTime), font=('arial',8)) self.timeLabelres.place(x=150,y=630) else: tkMessageBox.showinfo('Info', 'You must put a keyword') except Exception as e: tkMessageBox.showinfo('Info', 'No Internet Connection Try Again Later') exit() #eventlink self.searchButton.bind("<Button-1>",searchAction) self.searchEntry1.bind("<Return>",searchAction) self.linkres1.bind("<Button-1>", callback1) self.linkres2.bind("<Button-1>", callback2) self.linkres3.bind("<Button-1>", callback3) self.linkres4.bind("<Button-1>", callback4) self.linkres5.bind("<Button-1>", callback5) self.linkres6.bind("<Button-1>", callback6) self.linkres7.bind("<Button-1>", callback7) self.linkres8.bind("<Button-1>", callback8) self.labelres1.bind("<Button-1>", callback1) self.labelres2.bind("<Button-1>", callback2) self.labelres3.bind("<Button-1>", callback3) self.labelres4.bind("<Button-1>", callback4) self.labelres5.bind("<Button-1>", callback5) self.labelres6.bind("<Button-1>", callback6) self.labelres7.bind("<Button-1>", callback7) self.labelres8.bind("<Button-1>", callback8) self.searchEntry1.insert(END,'')
class TextBox: def __init__(self): self.WIDTH = 600 self.HEIGHT = 800 self.FONT = "helvetica" self.FONT_SIZE = 12 # colours specified as RGB fractions self.bg_input = [1, 1, 1] self.fg_input = [0, 0, 0] self.bg_article = [0, 0, 0] self.fg_min_article = [0.5, 0.5, 0.5] self.fg_max_article = [0.9, 0.9, 0.9] self.fg_solution_article = [1, 1, 1] #[0.3, 0.5, 1.0] #[1, 0.7, 0.4] invert = False if invert: self.bg_input = [1. - v for v in self.bg_input] self.fg_input = [1. - v for v in self.fg_input] self.bg_article = [1. - v for v in self.bg_article] self.fg_min_article = [1. - v for v in self.fg_min_article] self.fg_max_article = [1. - v for v in self.fg_max_article] self.text = "" # what is shown in the box self.allText = "" # the text for the entire article self.sentences = [] # list of sentences in article # dictionary mapping from size to k-hot encoding indicating # which sentences are in the summary self.solutions = [] # (not used) how much weight is put on each sentence self.weights = [] self.only_summary = True self.summary_size = 1 self.summary_coherence = 0.0 self.summary_independence = 0.8 self.summarizer = Summarizer(parent=self) self.root = Tk() self.draw(init=True) #self.root.mainloop() def draw(self, init=False): if init: # show main article body self.tk_article = ScrolledText(self.root) # let user paste and enter text self.tk_user_input = ScrolledText(self.root) self.tk_summary_size_scale = Scale(self.root) self.tk_summary_size_scale_label = Label(self.root, text="Length") self.tk_summary_coherence_scale = Scale(self.root) self.tk_summary_coherence_scale_label = Label(self.root, text="Coherence") self.tk_summary_independence_scale = Scale(self.root) self.tk_summary_independence_scale_label = Label( self.root, text="Independence") self.tk_toggle_view = Button(self.root, text="more", command=self.handleToggleView) self.tk_recalculate = Button(self.root, text="Update", command=self.handleRecalculate) self.root.geometry("%dx%d" % (self.WIDTH, self.HEIGHT)) self.root.title("QuickReader V4") self.tk_article.configure(width=25, height=6, bd=0, highlightthickness=0, wrap="word", font=self.FONT) self.tk_user_input.configure(width=25, height=3, bd=0, highlightthickness=0, wrap="word", font=self.FONT) self.tk_summary_size_scale.configure( bd=0, from_=0, to=20, orient=HORIZONTAL, sliderrelief=FLAT, command=lambda event: self.handleSlider( self.tk_summary_size_scale.get())) ###### self.tk_summary_coherence_scale.configure( bd=0, from_=0, to=1, orient=HORIZONTAL, sliderrelief=FLAT, resolution=0.05, command=lambda event: self.handleCoherenceSlider( self.tk_summary_coherence_scale.get())) self.tk_summary_coherence_scale.set(self.summary_coherence) ###### self.tk_summary_independence_scale.configure( bd=0, from_=0, to=1.5, orient=HORIZONTAL, sliderrelief=FLAT, resolution=0.05, command=lambda event: self.handleIndependenceSlider( self.tk_summary_independence_scale.get())) self.tk_summary_independence_scale.set(self.summary_independence) # set colours self.root.configure(background="black") self.tk_summary_size_scale.configure(troughcolor="#444444", fg="black", background="white", activebackground="#bbbbbb") self.tk_summary_coherence_scale.configure( troughcolor="#444444", fg="black", background="white", activebackground="#bbbbbb") self.tk_summary_independence_scale.configure( troughcolor="#444444", fg="black", background="white", activebackground="#bbbbbb") self.tk_article.configure(bg=toHex(self.bg_article), fg="white", insertbackground="blue") self.tk_article.vbar.configure(bg="white", width=10, troughcolor="black") self.tk_user_input.configure(bg=toHex(self.bg_input), fg=toHex(self.fg_input), insertbackground="blue") self.tk_user_input.vbar.configure(bg="white", width=10, troughcolor="black") self.tk_user_input.focus() self.tk_user_input.bind("<KeyRelease-Return>", (lambda event: self.handleUserInput( self.tk_user_input.get("0.0", END)))) self.root.bind("<Configure>", self.resize) def setText(self, text, redraw=False): self.text = text if redraw: self.updateArticleInfo() def setSentences(self, sentences, redraw=False): self.sentences = sentences if redraw: self.updateArticleInfo() def setSolutions(self, solutions, redraw=False): self.solutions = solutions if redraw: self.updateArticleInfo() def setWeights(self, weights, redraw=False): self.weights = weights if redraw: self.updateArticleInfo() def handleToggleView(self): print("View toggle!") self.only_summary = not self.only_summary if self.only_summary: self.tk_toggle_view.configure(text="more") else: self.tk_toggle_view.configure(text="less") self.updateSummary() def handleRecalculate(self): print("Update!") self.handleUserInput(self.allText) def handleSlider(self, value): print("Slider:", value) self.summary_size = value self.updateSummary() def handleCoherenceSlider(self, value): print("Coherence Slider:", value) self.summary_coherence = value #self.updateSummary() def handleIndependenceSlider(self, value): print("Independence Slider:", value) self.summary_independence = value #self.updateSummary() def updateSummary(self): l = self.summary_size if self.only_summary and l != 0: self.setText('\n\n'.join([ self.sentences[i] for i in range(len(self.sentences)) if self.solutions[l][i] == 1 ])) else: self.setText(self.allText, redraw=False) self.updateArticleInfo() self.setWeights([0. for _ in self.sentences], redraw=True) self.tk_article.yview_moveto(0) #vbar.set(0, 0) #configure(jump=0) def handleUserInput(self, inStr): self.tk_user_input.delete("0.0", END) if inStr.strip() == "": return text = inStr text = ''.join([ch for ch in text if ord(ch) < 128]) self.setText(text, redraw=False) self.setSolutions([], redraw=False) self.setWeights([], redraw=True) text, sentences, solutions = self.summarizer.summarize( text, coherence_weight=self.summary_coherence, independence_weight=self.summary_independence, size_weight=1., beam_width=3, hard_size_limit=None) self.allText = text self.sentences = sentences self.solutions = solutions self.solutions[0] = [1. for _ in sentences] # get max length for summary max_len = max(solutions.keys()) set_len = min(max_len, 3) self.tk_summary_size_scale.configure(from_=0, to=max_len) self.tk_summary_size_scale.set(set_len) self.summary_size = set_len # text: all the text in one long string # sentences: the text split up into a list of sentences # solution: dictionary mapping summary size to a one-hot vector over the sentences, indicating # which sentences are included in the summarization # the text should be the same, but update it anyways since it needs to contain the # exact same stuff as the sentences self.updateSummary() #self.updateArticleInfo() def resize(self, event=[]): LINEH = 20.0 pixelX = self.root.winfo_width() pixelY = self.root.winfo_height() bf = 5 # buffer size in pixels # update find_icon, wiki_icon, and graph_icon # set toggle and recalculate button toggleW = 50 toggleH = 35 * 1 self.tk_toggle_view.place(x=pixelX - toggleW, y=0, width=toggleW, height=toggleH) updateW = 50 updateH = 35 * 2 self.tk_recalculate.place(x=pixelX - updateW, y=toggleH, width=updateW, height=updateH) buttonH = toggleH + updateH labelW = 90 # set position of size scale scaleW = pixelX - updateW - labelW scaleH = 35 self.tk_summary_size_scale.place(x=labelW, y=0, width=scaleW, height=scaleH) self.tk_summary_size_scale_label.place(x=0, y=0, width=labelW, height=scaleH) # set position of coherence scale coherenceW = pixelX - updateW - labelW coherenceH = 35 self.tk_summary_coherence_scale.place(x=labelW, y=scaleH, width=scaleW, height=scaleH) self.tk_summary_coherence_scale_label.place(x=0, y=scaleH, width=labelW, height=coherenceH) # set position of independence scale independenceW = pixelX - updateW - labelW independenceH = 35 self.tk_summary_independence_scale.place(x=labelW, y=scaleH + coherenceH, width=scaleW, height=scaleH) self.tk_summary_independence_scale_label.place(x=0, y=scaleH + coherenceH, width=labelW, height=independenceH) # update user input inputW = pixelX inputH = int(3.0 * LINEH) self.tk_user_input.place(x=0, y=pixelY - inputH, width=inputW, height=inputH) # update article articleW = pixelX articleH = pixelY - inputH - scaleH - coherenceH - independenceH self.tk_article.place(x=0, y=scaleH + coherenceH + independenceH, width=articleW, height=articleH) def updateArticleInfo(self): self.articleClear() self.articleCat(self.text) if self.weights != []: self.articleColour() self.root.update() def articleClear(self): self.tk_article.delete("1.0", END) self.tk_article.update() self.root.update() return def articleCat(self, inStr): self.tk_article.insert(END, inStr) self.tk_article.yview(END) def articleColour(self): ''' solution = self.solutions[self.summary_size] allText = self.text #self.tk_article.get('1.0', 'end-1c') # make sure weights are normalised maxW = max(self.weights) minW = min(self.weights) weights = self.weights if maxW != minW: weights = [(v-minW)/(maxW-minW) for v in self.weights] for i in range(len(self.sentences)): if self.only_summary and solution[i] != 1.: continue s = self.sentences[i] if len(s.strip()) == 0: continue tagNameA = ''.join([random.choice('abcdefghijklmnopqrstuvwxyz') for _ in range(10)]) L_Size = 12 # if solution[i] == 1 else 10 L_Colour = blend(self.fg_min_article, self.fg_max_article, weights[i]) L_Colour = self.fg_solution_article if solution[i] == 1 else L_Colour countVar = StringVar(self.root) pos = self.tk_article.search(s, "1.0", stopindex="end", count=countVar) self.tk_article.tag_add(tagNameA, pos, "{} + {}c".format(pos, countVar.get())) bolding = "normal" #"bold" if self.solution[i] == 1 else "normal" # font = (self.FONT, L_Size, bolding) self.tk_article.tag_config(tagNameA, foreground=toHex(L_Colour), font=font)#self.FONT+' %s'%(L_Size)) self.root.update() ''' solution = self.solutions[self.summary_size] allText = self.text #self.tk_article.get('1.0', 'end-1c') #print("=========") for i in range(len(self.sentences)): if self.only_summary and solution[i] != 1.: continue s = self.sentences[i] #if len(s.strip()) == 0: # continue #print("- ", s) tagNameA = ''.join([ random.choice('abcdefghijklmnopqrstuvwxyz') for _ in range(10) ]) L_Size = self.FONT_SIZE # if solution[i] == 1 else 10 L_Colour = self.fg_solution_article if solution[ i] == 1 else self.fg_min_article #print("\t", L_Colour) countVar = StringVar(self.root) pos = self.tk_article.search(s, "1.0", stopindex="end", count=countVar) self.tk_article.tag_add(tagNameA, pos, "{} + {}c".format(pos, countVar.get())) bolding = "normal" #"bold" if self.solution[i] == 1 else "normal" # font = (self.FONT, L_Size, bolding) self.tk_article.tag_config(tagNameA, foreground=toHex(L_Colour), font=font) #self.FONT+' %s'%(L_Size)) self.root.update()
class DesDesk(): def __init__(self): window = Tk() window.title("des加密与解密") window.geometry('700x500+300+150') # window['background'] = 'MintCream' # window['background'] = 'Moccasin' # window['background'] = 'Honeydew' # img_gif = PhotoImage(file='timg.gif') # image = Image.open(r'timg.gif') # background_image = ImageTk.PhotoImage(image) # background_image = ImageTk.PhotoImage(image) # window['background'] = background_image # window['background'] = img_gif window['background'] = "LightCyan" # window.iconbitmap("des.jpeg") # frame1 = Frame(window) # frame1.pack() window_x = 120 font = "Times" font_color = "LightCoral" # font_color = "Wheat" input_label = Label(window, text="明文") input_label.config(bg=font_color) input_label.config(font=font) input_label_y = 10 input_label.place(x=window_x, y=input_label_y) self.input_text = ScrolledText(window, height=8, width=60) self.input_text.tag_config('a', foreground='red') self.input_text.place(x=window_x, y=input_label_y + 30) key_label = Label(window, text="密码") key_label.config(font=font) key_label.config(bg=font_color) self.key = StringVar() key_entry = Entry(window, textvariable=self.key) key_entry['show'] = "*" key_label_y = 190 key_label.place(x=window_x, y=key_label_y) key_entry.place(x=window_x + 40, y=key_label_y) button_color = "CornflowerBlue" btn_font_color = "Ivory" encode = Button(window, text="加密", command=self.encode_text) encode.config(font=font) encode.config(bg=button_color) encode.config(fg=btn_font_color) #decode_img = PhotoImage(file="decode.png") decode = Button(window, text="解密", command=self.decode_text) decode.config(font=font) decode.config(bg=button_color) decode.config(fg=btn_font_color) encode.place(x=window_x + 300, y=key_label_y) decode.place(x=window_x + 380, y=key_label_y) out_label = Label(window, text="密文") out_label.config(font=font) out_label.config(bg=font_color) out_label_y = 240 out_label.place(x=window_x, y=out_label_y) self.out_text = ScrolledText(window, height=8, width=60) self.out_text.place(x=window_x, y=out_label_y + 30) #label = Label(window, text="解密").place(x=20,y=30) # text_area.grid(row=1, column=1) # text_entry.grid(row=1, column=2) # key_label.grid(row=2, column=1) # key_entry.grid(row=2, column=2) # encode.grid(row=2, column=1) # import and export button import_btn = Button(window, text="导入", command=self.ask_open_file) export_btn = Button(window, text="导出", command=self.ask_save_file) import_btn.place(x=window_x + 300, y=out_label_y + 160) export_btn.place(x=window_x + 380, y=out_label_y + 160) import_btn.config(font=font) import_btn.config(bg=button_color) import_btn.config(fg=btn_font_color) export_btn.config(font=font) export_btn.config(bg=button_color) export_btn.config(fg=btn_font_color) window.mainloop() def ask_open_file(self): try: file_path = tkFileDialog.askopenfilename() with open(file_path, "r") as file: contents = file.read() # print(contents) contents = eval(contents) text_not_null = False if contents.has_key('text'): self.input_text.insert(END, contents['text']) text_not_null = True if contents.has_key("key"): self.key.set(contents['key']) text_not_null = True if contents.has_key("encode"): self.out_text.insert(END, contents['encode']) text_not_null = True if text_not_null: showinfo("提示", "导入成功!") else: showinfo("提示", "文件为空!") except Exception as e: return # 将明文、密码和密文以字典方式保存 def ask_save_file(self): try: file_path = tkFileDialog.asksaveasfilename() contents = dict( text=self.input_text.get("1.0", END).strip(), key=self.key.get().strip(), encode=self.out_text.get("1.0", END).strip(), ) contents = str(contents) print(contents) with open(file_path, "w") as file: file.write(contents) showinfo("提示", "导出成功!") except Exception as e: return def encode_text(self): text = self.input_text.get("1.0", END).strip() key = self.key.get().strip() if text == "" or text == None: print("请输入明文!") showinfo("提示", "请输入明文!") return if key == "" or key == None: print("请输入密码!") showinfo("提示", "请输入密码!") return if not check_key(key): showinfo("提示", "密码中必须含有数字、字母和特殊字符!") self.key.set("") return print("text:%s;key:%s" % (text, key)) encoded_text = des.code(text, key) print("encode_text is %s" % encoded_text) # clean out_put area self.out_text.delete("1.0", END) # insert into out_put text self.out_text.insert(END, encoded_text) def decode_text(self): text = self.out_text.get("0.0", END).strip() key = self.key.get().strip() if text == "" or text == None: print("请输入密文!") showinfo("提示", "请输入密文!") return if key == "" or text == None: print("请输入密码!") showinfo("提示", "请输入密码!") return print("text:%s;key:%s" % (text, key)) try: decoded_text = des_1.decode(text, key) print("decoded_text is %s" % decoded_text) except Exception as e: showerror("", "解密过程出错请重试!") self.out_text.delete("1.0", END) self.key.set("") return self.input_text.delete("1.0", END) self.input_text.insert(END, decoded_text)
class Crawler_plusplus(): def __init__(self): self.rt = tk.Tk() #创建窗口 self.rt.title('Automatically download pictures') #窗口标题 self.menu = tk.Menu(self.rt) #在根窗口里创建一个菜单 self.rt.config(menu=self.menu) #把新创建菜单定为根窗口的菜单 self.aboutmenu = tk.Menu(self.menu) #在根窗口菜单里创建一个菜单 self.picturemenu = tk.Menu(self.menu) #在根窗口菜单里创建一个菜单 self.aboutmenu.add_command(label='help', command=self.help) #菜单里的菜单增加“help”命令 self.menu.add_cascade(label='About', menu=self.aboutmenu) #把菜单里的菜单命名为about self.menu.add_cascade(label='Picture Proecessing', menu=self.picturemenu) self.picturemenu.add_command(label='Start Proecessing', command=self.Picture_Processing) self.menu.add_command(label='refresh', command=self.refresh) self.menu.add_command(label='Exit', command=self.close) self.frame1 = tk.Frame(self.rt, height=260, width=520) #左边模块,负责爬取百度图片 self.middle = tk.Frame(self.rt, height=260, width=120) #右边模块,用来提示错误信息 self.lframe1 = tk.LabelFrame(self.frame1, height=60, width=520, text='Save path') self.lframe2 = tk.LabelFrame(self.frame1, height=200, width=520, text='Download') self.b1 = tk.Button(self.lframe1, text='Choose', width=8, height=1, command=self.get_directory1) self.b2 = tk.Button(self.lframe1, text='Confirm', width=10, height=1, command=self.confirm_e) self.b3 = tk.Button(self.lframe1, text='Cancel', width=10, height=1, command=self.deconfirm_e, state='disabled') self.a1 = tk.Button(self.lframe2, text='Get the picture', width=10, height=1, command=self.start_cr, state='disabled') self.e1 = tk.Entry(self.lframe1, takefocus=True) self.e2 = tk.Entry(self.lframe2, state='disabled') self.alo = tk.Label(self.rt, text='Note:') #中间模块的内容 self.ala = tk.Label(self.rt, text='', foreground='red') #中间模块的错误提示,内容现在是空的 self.l1 = tk.Label(self.lframe2, text='Key words:', relief='flat') self.l2 = tk.Label(self.lframe2, text='Download progress:', relief='groove') self.s = ScrolledText(self.lframe2, height=8, width=40, state='disabled', wrap='char', borderwidth=0) self.frame1.grid(column=0, row=0, rowspan=2, columnspan=1) self.lframe1.grid(row=0, column=1) self.b1.place(x=45, y=15, anchor='center') self.e1.place(x=280, y=15, anchor='e') self.b2.place(x=400, y=15, anchor='e') self.b3.place(x=480, y=15, anchor='e') self.lframe2.grid(row=1, column=1) self.l1.place(x=130, y=15, anchor='e') self.e2.place(x=280, y=15, anchor='e') self.a1.place(x=400, y=15, anchor='e') self.l2.place(x=15, y=45, anchor='w') self.s.place(x=15, y=115, anchor='w') self.middle.grid(column=1, row=0) self.ala.place(x=580, y=140, anchor='center') self.alo.place(x=580, y=120, anchor='center') #图形处理界面 def Picture_Processing(self): top = tk.Toplevel() top.title('Picture Processing') top.geometry('520x260') self.frame2 = tk.Frame(top, height=260, width=520) #框架 用来批量处理图片 self.lframe3 = tk.LabelFrame(self.frame2, height=140, width=520, text='图片预处理') self.lframe4 = tk.LabelFrame(self.frame2, height=60, width=520, text='保存图片集') self.lframe5 = tk.LabelFrame(self.frame2, height=60, width=520, text='预处理图片路径选择') self.b4 = tk.Button(self.lframe5, text='选择图片目录', width=12, height=1, command=self.get_directory5) self.b5 = tk.Button(self.lframe5, text='确定该目录', width=10, height=1, command=self.confirm_e1) self.b6 = tk.Button(self.lframe5, text='取消确定', width=10, height=1, command=self.deconfirm_e1, state='disabled') self.a2 = tk.Button(self.lframe3, text='图片处理启动', width=10, height=1, command=self.start_pi, state='disabled') self.ad = tk.Button(self.lframe4, text='选择保存文件夹', width=14, height=1, command=self.get_directory4, state='disabled') self.a3 = tk.Button(self.lframe4, text='确定该目录', width=10, height=0, command=self.confirm_e2, state='disabled') self.a4 = tk.Button(self.lframe4, text='取消确定', width=10, height=0, command=self.deconfirm_e2, state='disabled') self.a5 = tk.Button(self.lframe3, text='默认设置', width=10, height=1, command=self.reset, state='disabled') self.e3 = tk.Entry(self.lframe5, takefocus=True) self.e4 = tk.Entry(self.lframe4, takefocus=True, state='disabled') self.alb = tk.Label(self.lframe5, text='', foreground='red') self.l3 = tk.Label(self.lframe3, text='处理进度:', relief='groove') self.xlen = tk.IntVar() self.xlen.set(128) self.ylen = tk.IntVar() self.ylen.set(128) self.xl = tk.Entry(self.lframe3, state='readonly', width=4, textvariable=self.xlen, invcmd=self.alarm) self.yl = tk.Entry(self.lframe3, state='readonly', width=4, textvariable=self.ylen, invcmd=self.alarm) self.xv = tk.Label(self.lframe3, text='输出图宽:') self.yv = tk.Label(self.lframe3, text='输出图高:') self.note1 = tk.Label(self.lframe3, text='建议输出\n128*128') self.s1 = ScrolledText(self.lframe3, height=6, width=40, state='disabled', borderwidth=0) self.color = tk.IntVar() self.color.set(0) self.rb1 = tk.Radiobutton(self.lframe3, text='灰色', variable=self.color, value=0, state='disabled') self.rb2 = tk.Radiobutton(self.lframe3, text='彩色', variable=self.color, value=1, state='disabled') self.cls = tk.Label(self.lframe3, text='输出图片颜色') self.type = tk.Label(self.lframe3, text='输出图片格式') self.type.place(x=75, y=5, anchor='w') self.ty = tk.IntVar() self.ty.set(0) self.rb3 = tk.Radiobutton(self.lframe3, text='jpg', variable=self.ty, value=0, state='disabled') self.rb4 = tk.Radiobutton(self.lframe3, text='png', variable=self.ty, value=1, state='disabled') self.rb5 = tk.Radiobutton(self.lframe3, text='jpeg', variable=self.ty, value=2, state='disabled') self.rb3.place(x=150, y=5, anchor='w') self.rb4.place(x=200, y=5, anchor='w') self.rb5.place(x=250, y=5, anchor='w') self.a3.place(x=400, y=45, anchor='e') self.a4.place(x=480, y=45, anchor='e') self.frame2.grid(column=2, row=0, rowspan=3, columnspan=1) self.lframe5.grid(column=0, row=0) self.b4.place(x=80, y=15, anchor='center') self.e3.place(x=280, y=15, anchor='e') self.b5.place(x=400, y=15, anchor='e') self.b6.place(x=480, y=15, anchor='e') self.alb.place(x=550, y=15, anchor='e') self.lframe4.grid(column=0, row=1) self.ad.place(x=80, y=15, anchor='center') self.e4.place(x=280, y=15, anchor='e') self.a3.place(x=400, y=15, anchor='e') self.a4.place(x=480, y=15, anchor='e') self.lframe3.grid(column=0, row=2) self.l3.place(x=15, y=15, anchor='w') self.s1.place(x=15, y=70, anchor='w') self.xv.place(x=330, y=30, anchor='w') self.xl.place(x=390, y=30, anchor='w') self.yv.place(x=330, y=60, anchor='w') self.yl.place(x=390, y=60, anchor='w') self.note1.place(x=420, y=45, anchor='w') self.rb1.place(x=380, y=5, anchor='w') self.rb2.place(x=440, y=5, anchor='w') self.cls.place(x=305, y=5, anchor='w') self.a2.place(x=480, y=90, anchor='e') self.a5.place(x=400, y=90, anchor='e') #打开readme.txt文件查看帮助 def help(self): os.system('notepad.exe readme.txt') #程序功能无法使用时刷新,重新启动该脚本 def refresh(self): self.quit() os.system('python root.py') #运行程序,打开窗口 def run(self): self.rt.mainloop() #爬图前确认图片关键字是否存在 def start_cr(self): word = self.e2.get() if word != '': st = askyesno(title='确认开始', message='确定开始下载图片?这会有一段时间的卡顿,中途不要退出页面') if st: self.start_in() #图片关键字存在,开始爬图 else: self.s.config(state='normal') self.s.delete(1.0, 'end') self.s.insert('end', '请先输入图片关键字(如:周杰伦)') self.s.config(state='disabled') def close(self): cl = askyesno(title='确认关闭', message='确定要关闭吗?') if cl: self.quit() def quit(self): self.rt.destroy() def confirm_e(self): path = self.e1.get() if path == '': self.ala.config(text='请先选择图片保存目录!') elif os.path.exists(path) is False: self.ala.config(text='该路径不存在!') else: self.ala.config(text='') self.e1.config(state='disabled') self.e2.config(state='normal') self.b1.config(state='disabled') self.b2.config(state='disabled') self.b3.config(state='normal') self.a1.config(state='normal') def confirm_e1(self): path = self.e3.get() if path == '': self.ala.config(text='请先选择图片目录!') elif os.path.exists(path) is False: self.ala.config(text='该路径不存在!') else: self.ala.config(text='') self.b4.config(state='disabled') self.b5.config(state='disabled') self.e3.config(state='disabled') self.e4.config(state='normal') self.b6.config(state='normal') self.ad.config(state='normal') self.a3.config(state='normal') def confirm_e2(self): path = self.e4.get() if path == '': self.ala.config(text='请先选择图片保存目录!') elif os.path.exists(path) is False: self.ala.config(text='该路径不存在!') else: self.ala.config(text='') self.b6.config(state='disabled') self.ad.config(state='disabled') self.e4.config(state='disabled') self.a3.config(state='disabled') self.a4.config(state='normal') self.rb1.config(state='normal') self.rb2.config(state='normal') self.rb3.config(state='normal') self.rb4.config(state='normal') self.rb5.config(state='normal') self.xl.config(state='normal') self.yl.config(state='normal') self.a2.config(state='normal') self.a5.config(state='normal') def deconfirm_e(self): self.e1.config(state='normal') self.e2.config(state='disabled') self.b1.config(state='normal') self.b2.config(state='normal') self.b3.config(state='disabled') self.a1.config(state='disabled') self.a3.config(state='disabled') self.s.config(state='disabled') def deconfirm_e1(self): self.b4.config(state='normal') self.b5.config(state='normal') self.e3.config(state='normal') self.e4.config(state='disabled') self.b6.config(state='disabled') self.ad.config(state='disabled') self.a3.config(state='disabled') def deconfirm_e2(self): self.b6.config(state='normal') self.ad.config(state='normal') self.e4.config(state='normal') self.a3.config(state='normal') self.a4.config(state='disabled') self.b6.config(state='normal') self.ad.config(state='normal') self.e4.config(state='normal') self.a3.config(state='normal') self.a4.config(state='disabled') self.rb1.config(state='disabled') self.rb2.config(state='disabled') self.rb3.config(state='disabled') self.rb4.config(state='disabled') self.rb5.config(state='disabled') self.xl.config(state='disabled') self.yl.config(state='disabled') self.a2.config(state='disabled') self.a5.config(state='disabled') def reset(self): self.xlen.set(128) self.ylen.set(128) self.color.set(0) self.ty.set(0) self.a2.config(state='normal') #开始收集'存储地址'和'图片关键字'并开始爬图 def start_in(self): word = self.e2.get() self.a1.config(state='disabled') self.e2.config(state='disabled') self.s.config(state='normal') self.b1.config(state='disabled') self.b2.config(state='disabled') self.b3.config(state='disabled') path = self.e1.get() self.s.delete(1.0, 'end') ins = word.encode('utf-8') self.s.insert('end', '正在百度搜索:' + ins) self.get_images(word, path) #这是爬图的主程序 #格式错误反馈 def alarm(self): self.ala.config(text='输入格式有误!') #self.a.delete(0,'end') #读取网页url def readurl(self, url): page = urllib.urlopen(url) htm = page.read() return htm #下载网络图片 #imgurl:单张网络图片的url地址 #path:图片存储路径 #x:图片编号,同时也是图片名 #lastname:网络图片的后缀名 def downloadimg(self, imgurl, path, x, lastname): error_time = 0 while True: time.sleep(1) try: try: urllib.urlretrieve(imgurl, path + '/%s' % x + lastname) # 从地址上下载单张图片到指定存储位置上 #self.s.insert('insert', '\n第%s张图片下载成功' % x) except socket.timeout: # 防止超时卡死,重新下载 self.s.insert('insert', '\nReloading...') count = 1 # 卡死计数 while count <= 2: # 重新下载图片两次 try: urllib.urlretrieve(imgurl, path + '/%s' % x + lastname) time.sleep(0.001) self.s.insert('insert', '\n第%s张图片下载成功' % x) break except socket.timeout: err_info = 'Reloading for %d time' % count if count == 1 else 'Reloading for %d times' % count self.s.insert('insert', '\n' + err_info) count = count + 1 if count > 2: # 卡死次数过多 # 删除错误文件 os.remove(path + '/%s' % x + lastname) imgname = path + '/%s' % x + lastname size = os.path.getsize(imgname) / float(1024) # 获取图片大小 # size单位为kb if size < 20: # 删除小于20kb的图片 os.remove(path + '/%s' % x + lastname) self.s.insert('insert', '\n第%s张图片大小太小,跳过' % x) except: error_time += 1 if error_time == 100: print('your network is little bad') time.sleep(60) if error_time == 101: print('your network is broken') break continue break #获取图片地址列表 #jpgre:jpg图片地址的正则表达式形式 #pngre和jpegre同上 #htm:网页源代码 def get_imglist(self, jpgre, pngre, jpegre, htm): jpglist = re.findall(jpgre, htm) #在htm里寻找所有jpg图片的源代码,并做成一个列表 pnglist = re.findall(pngre, htm) jpeglist = re.findall(jpegre, htm) piclist = [jpglist, pnglist, jpeglist] return piclist #piclist是一个三元列表,每一个元素也是一个列表 #获得文件夹目录 def get_directory1(self): savepath = askdirectory() self.e1.delete(0, 'end') self.e1.insert('insert', savepath) def get_directory5(self): savepath = askdirectory() self.e3.delete(0, 'end') self.e3.insert('insert', savepath) def get_directory4(self): savepath = askdirectory() self.e4.delete(0, 'end') self.e4.insert('insert', savepath) #爬取图片主程序 #word:图片关键字 #path:图片存储路径 def get_images(self, word, path): var1 = word.encode('utf-8') #get()函数得到的字符串不是utf-8编码,需要转到utf-8 search = urllib.quote(var1) #用urllib的网页格式转码utf-8格式的图片关键字 pn = 0 # pn = 20*(页数+1) err_num = 0 #错误计数,连续十个网址下载出现错误时就终止爬图 x = 1 #图片编号 jpg = 'objURL":"(.+?.jpg)",' #百度图片的URL地址的正则表达式 jpgre = re.compile(jpg) #编译正则表达式,用于寻找网页源代码里的图片地址 jpeg = 'objURL":"(.+?.jpeg)",' jpegre = re.compile(jpeg) png = 'objURL":"(.+?.png)",' pngre = re.compile(png) self.s.insert('insert', '\n--------开始爬图--------') while True: url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + search + '&pn=' + str( pn) + '&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0' try: self.s.insert('insert', '\n正在读取源代码...') htm = self.readurl(url) #从网页地址里读取网页源代码 piclist = self.get_imglist(jpgre, pngre, jpegre, htm) #在网页文件里寻找编译后的URL地址,并返回一个列表 namelist = ['.jpg', '.png', '.jpeg'] #后缀名列表,百度图片的后缀名一般只有三种:jpg,png,jpeg n = 0 m = 0 self.s.insert('insert', '\n--------------') self.s.insert('insert', '\n源代码读取完毕') self.s.insert('insert', '\n--------------') for list in piclist: #注意:piclist是一个三元列表,每一个元素也是一个列表 lastname = namelist[n] n = n + 1 for imgurl in list: #list存储着许多图片的URL地址,每个imgurl是单张图片的url地址 dlth = threading.Thread( target=self.downloadimg, args=( imgurl, path, x, lastname, )) #把下载单张图片交给子进程去完成,提供进程需要执行的目标函数和函数参数 dlth.setDaemon(True) #dlth这三行缺一不可 dlth.start() #开始执行进程 self.s.insert('insert', '\n第%s张图片下载成功' % x) x = x + 1 #开始下载下一张图片 err_num = 0 #一张网页的下载顺利完成,错误代码归零 except: self.s.insert('insert', '\n...结束本页内容下载 继续') #跳过该页面下载下一页 pn = pn + 20 #pn = 20*(页数+1) err_num = err_num + 1 if pn > 1960: #图片关键字只会存100页的图片,所以pn>1960时不可能查到图 self.s.insert('insert', '\n...图片全部下载完毕') break elif err_num > 10: self.s.insert('insert', '\n...搜索不到更多图片,下载完毕') break elif x >= 1024: self.s.insert('insert', '\n...图片下载已达到上限') break self.s.insert('insert', '\n--------加载下一页--------') #以下为图片预处理部分 def start_pi(self): st = askyesno(title='确认开始', message='确定开始批处理图片?这会有一段时间的卡顿,但是可以去存储的文件夹拿到处理好的图') if st: reload(sys) sys.setdefaultencoding('utf8') self.start_pic() def start_pic(self): xLen = self.xl.get() yLen = self.yl.get() if xLen.isdigit() is True and yLen.isdigit() is True: self.ala.config(text='') self.a2.config(state='disabled') self.s1.config(state='normal') self.s1.insert('end', '\nxLen:' + str(xLen)) self.s1.insert('end', '\nyLen:' + str(yLen)) picpath = self.e3.get() savepath = self.e4.get() self.s1.insert('end', '\npicpath:' + picpath) self.s1.insert('end', '\nsavepath:' + savepath) pictypelist = ['LA', 'RGB'] pictype = pictypelist[self.color.get()] self.s1.insert('end', '\npictype:' + pictype) lastnamelist = ['.jpg', '.png', '.jpeg'] lastname = lastnamelist[self.ty.get()] self.s1.insert('end', '\nlastname:' + lastname) self.pre_main(picpath, savepath, pictype, xLen, yLen, lastname) else: self.ala.config(text='长宽输入格式有误!') def getNameList(self, picpath): if os.path.exists(picpath) is False: self.ala.config(text='该路径不存在!') else: self.ala.config(text='') files = os.listdir(picpath) return files def picdeal(self, name, picpath, savepath, pictype, xLen, yLen, lastname): try: names = name.split('.')[0] img = Image.open(picpath + '/' + name).convert(pictype).resize( (int(xLen), int(yLen))) img.save(savepath + '/%s' % names + lastname) except socket.timeout: count = 1 while count <= 2: try: img.save(savepath + '/%s' % names + lastname) self.s1.insert('end', '\n重新保存图片%s' % name + '1次') except socket.timeout: img.save(savepath + '/%s' % names + lastname) self.s1.insert('end', '\n重新保存图片%s' % name + '%d次' % (count + 1)) count = count + 1 if count >= 2: os.remove(savepath + '/%s' % names + lastname) except: names = name.split('.')[0] os.remove(savepath + '/%s' % names + lastname) def pre_main(self, picpath, savepath, pictype, xLen, yLen, lastname): nameList = self.getNameList(picpath) self.s1.insert('end', '\n共有%d张图片需要处理' % len(nameList)) for name in nameList: self.s1.insert('end', '\n正在处理图片:' + name) prth = threading.Thread(target=self.picdeal, args=( name, picpath, savepath, pictype, xLen, yLen, lastname, )) prth.setDaemon(True) prth.start()
class Socketgui(Tkinter.Tk): def __init__(self): Tkinter.Tk.__init__(self) self.title('RemoteControlServer') self.geometry('300x200') self.server = echoserver.Socketserver() self.set_widgets() self.resizable(width=False, height=False) def set_widgets(self): self.port_label = Tkinter.Label(self, text='端口号 :') self.port_label.place(x=30, y=25) self.default_port = Tkinter.StringVar() self.port_input = Tkinter.Entry(self, width=18, textvariable=self.default_port) self.default_port.set('4444') self.port_input.place(x=80, y=25) self.port_label = Tkinter.Label(self, text='IP地址 :') self.port_label.place(x=30, y=60) self.ip_readonly = Tkinter.StringVar() self.ip_display = Tkinter.Entry(self, text=self.ip_readonly, width=18) self.ip_readonly.set(localip.get_local_ip()) self.ip_display['state'] = 'readonly' self.ip_display.place(x=80, y=60) self.start_btn = Tkinter.Button(self, text='开启', command=self.start_btn_response) self.start_btn.place(x=220, y=21) self.stop_btn = Tkinter.Button(self, text='清空', command=self.clear_btn_response) self.stop_btn.place(x=220, y=56) # self.ms_readonly = Tkinter.StringVar() # self.ms_display = Tkinter.Entry(self,textvariable=self.ms_readonly,width=25,relief='flat',highlightcolor='white') # self.ms_readonly.set(outsave.OUTSAVE) # # self.ms_display['state'] = 'readonly' # self.ms_display.place(x=30,y=120) # self.last_ms = outsave.OUTSAVE # self.th_outsave = threading.Thread(target=self.output_change) # self.th_outsave.setDaemon(True) # self.th_outsave.start() self.ms_listbox = ScrolledText(self, height=6, width=35, relief='flat') self.ms_listbox.place(x=5, y=100) self.th_outsave = threading.Thread(target=self.ms_display) self.th_outsave.setDaemon(True) self.th_outsave.start() def start_btn_response(self): self.port = int(self.port_input.get()) self.addr = localip.get_local_ip() self.server_thread = threading.Thread(target=self.server.Server_start, args=(self.addr, self.port)) self.server_thread.setDaemon(True) #子线程随主线程一起关闭 self.server_thread.start() def clear_btn_response(self): self.ms_listbox.delete(1.0, 'end') def ask_quit(self): print "i'm here" self.quit() def ms_display(self): while True: if outsave.FLAG: self.ms_listbox.insert('end', outsave.OUTSAVE) outsave.FLAG = False self.ms_listbox.yview_scroll(1, "units")
class MainWindows(tkinter.Frame): def __init__(self, master): frame = tkinter.Frame(master,width=500,height=220) frame.grid(row=0, column=0) frame.pack() #self.repWin = repWin self.labelFile = tkinter.Label(frame, text='文件', font=('黑体'), justify='left', ) self.labelFile.place(x=35, y=30) self.fileVar = tkinter.Variable() self.fileEntry = tkinter.Entry(frame,textvariable=self.fileVar, width=45) #self.fileEntry.delete(0, 'end') self.fileEntry.place(x=90,y=30) self.buttonOpenFile = tkinter.Button(frame, text='打开', width=5, height=1, command=self.openFile) self.buttonOpenFile.place(x=430, y=30) self.labelPic = tkinter.Label(frame, text='图片', font=('黑体'), justify='left', ) self.labelPic.place(x=35, y=90) self.picVar = tkinter.Variable() self.picEntry = tkinter.Entry(frame,textvariable=self.picVar, width=45) self.picEntry.place(x=90,y=90) self.buttonOpenPic = tkinter.Button(frame, text='打开', width=5, height=1, command=self.openPic) self.buttonOpenPic.place(x=430, y=90) self.labelPic = tkinter.Label(frame, text='过滤词', font=('黑体'), justify='left', ) self.labelPic.place(x=20, y=150) self.st = ScrolledText(frame, width=43, height=3) self.st.place(x=90,y=150) self.buttonAddWords = tkinter.Button(frame, text='添加', width=5, height=1, command=self.addWords) self.buttonAddWords.place(x=430, y=150) def openFile(self): path = os.path.split(os.path.realpath(__file__))[0] fileName = askopenfilename(initialdir = path,filetypes=[('Word文档', '*.doc;*.docx'), ('文本文件', '*.txt')]) self.fileVar.set(fileName) return fileName def openPic(self): path = os.path.split(os.path.realpath(__file__))[0] picName = askopenfilename(initialdir = path,filetypes=[('JPEG', '*.jpg;*.jpeg;*.jpe;*.jfif'), ('PNG', '*.png')]) self.picVar.set(picName) return picName def addWords(self): f = open('./stopwords.txt','a+') text = f.read() dupWords = list() tempStrings = self.st.get('1.0', 'end-1c') tempStrings = tempStrings.encode('UTF-8') if tempStrings == '': self.replyNoneWin() else: wordList = re.split(',|,',tempStrings) for i in range(len(wordList)): if wordList[i].strip() not in text: f.seek(0,2) f.write(wordList[i].strip()+'\n') else: dupWords.append(wordList[i].strip()) self.replyOkWin() if dupWords != '': self.replyDupWin(dupWords) f.close() def replyOkWin(self): showinfo(title='提示', message='添加成功!') def replyDupWin(self,dupWords): showinfo(title='提示', message='以下词语:"' + ','.join(dupWords) + '" 已经收录,无需再次添加。') def replyNoneWin(self): showinfo(title='提示', message='没有添加内容')
class Note(Toplevel): """ Display select Note """ def __init__(self, window=None): Toplevel.__init__(self, window=None) self.background = PhotoImage(file='Image/note_bg1.gif') self.image = PhotoImage(file='Image/favorite2.gif') self.window = window def my_note(self, title): """Main UI for note""" data = get_data()[title] data = get_data()[title] self.bg = Label(self, image=self.background) self.title = Label(self, text=title, fg='#f46b2f', bg='#efe9dc', font=('AngsanaUPC', 18, 'bold')) self.txt = ScrolledText(self, width=44, height=13, bg='#efe9dc',\ font=('AngsanaUPC', 14), relief=FLAT) self.txt.insert('1.0', data[0]) self.txt.config(state='disable') self.ok = Button(self, text='Ok', bg='white', relief=FLAT, width=13, font=('Arial', 10, 'bold'), command=lambda title=title: self.check_edit(title), activebackground='#3FBB06') self.delete = Button(self, text='Delete', bg='white', relief=FLAT, width=13, font=('Arial', 10, 'bold'), activebackground='#C62F2F', command=lambda title=title: self.delete_select(title)) self.edit = Button(self, text='Edit', bg='white', font=('Arial', 10, 'bold'), activebackground='#747474', command=self.make_edit, relief=FLAT, width=14) self.ok.bind("<Enter>", self.button_ok1) self.ok.bind("<Leave>", self.button_ok2) self.delete.bind("<Enter>", self.button_delete1) self.delete.bind("<Leave>", self.button_delete2) self.edit.bind("<Enter>", self.button_edit1) self.edit.bind("<Leave>", self.button_edit2) self.bg.place(x=-2, y=0) self.title.place(x=30, y=50) self.ok.place(x=236, y=472) self.delete.place(x=0, y=472) self.txt.place(x=25, y=100) self.edit.place(x=114, y=472) if data[2] == '1': self.favor = Label(self, image=self.image, bg='#efe9dc') self.favor.place(x=266, y=40) def delete_select(self, title): """Delete data and destroy current window""" ask = tkMessageBox.askquestion("Delete", "Are you sure?", icon="warning") if ask == 'yes': delete_data(title) self.destroy() if self.window != None: self.window.destroy() note_store = NoteStorage() note_store.geometry('450x600+450+90') note_store.title('Note Storage') note_store.resizable(width=False, height=False) note_store.all_note() def check_edit(self, title): """replace text if text have change else destroy current page""" old = get_data()[title][0].splitlines() new = self.txt.get('1.0', END).splitlines() star = get_data()[title][2] for i in new: if i == '': new.remove(i) if new != old: tkMessageBox.showinfo('Status', 'Complete') add_data(title, self.txt.get('1.0', END), date(), star) self.destroy() if self.window != None: self.window.destroy() note_store = NoteStorage() note_store.geometry('450x600+450+90') note_store.title('Note Storage') note_store.resizable(width=False, height=False) note_store.all_note() else: self.destroy() def button_ok1(self, event): """Event button when press""" self.ok.config(relief=GROOVE, bg='#44D002') self.edit.config(bg='#44D002') self.delete.config(bg='#44D002') def button_ok2(self, event): """Event button when release""" self.ok.config(relief=FLAT, bg='white') self.edit.config(bg='white') self.delete.config(bg='white') def button_delete1(self, event): """Event ok button when press""" self.delete.config(relief=GROOVE, bg='#FF2828') self.ok.config(bg='#FF2828') self.edit.config(bg='#FF2828') def button_delete2(self, event): """Event button when release""" self.delete.config(relief=FLAT, bg='white') self.ok.config(bg='white') self.edit.config(bg='white') def button_edit1(self, event): """Event ok button when press""" self.delete.config(bg='#AFAFAF') self.ok.config(bg='#AFAFAF') self.edit.config(bg='#AFAFAF', relief=GROOVE) def button_edit2(self, event): """Event button when release""" self.delete.config(bg='white') self.ok.config(bg='white') self.edit.config(relief=FLAT, bg='white') def make_edit(self): """config text widget""" self.txt.config(state='normal')
class PackageInstallDlg(Frame): def __init__(self, master=None, width=0, height=0): Frame.__init__(self, master) self.createdlg() def createdlg(self): global nWindowWidth, nWindowHeight # window title self.master.title('PackageInstall_Tool %s' % (g_StrVersion)) self.pack(fill=BOTH, expand=1) # expand = 1 can use fix ,and fill has x AND y AND both,3 parameters,both will expand to x and y ,when expand your GUI self.master.iconbitmap(r'Install.ico') self.master.protocol('WM_DELETE_WINDOW', self.on_closing) # define the DELETE_WINDOW ACTION is on_closing activity nWindowWidth, nWindowHeight = (self.winfo_screenwidth() * 3 / 4), (self.winfo_screenheight() * 3 / 4) nWindowsPosX = (self.winfo_screenwidth() / 2) - (nWindowWidth / 2) nWindowsPosY = (self.winfo_screenheight() / 2) - (nWindowHeight / 2) self.master.minsize(width=nWindowWidth, height=nWindowHeight) self.master.maxsize(width=nWindowWidth, height=nWindowHeight) self.master.geometry("+%d+%d" % (nWindowsPosX, nWindowsPosY)) self.showReportBox() self.showExitBtn() self.showCheckFrame() self.showPackageCheckBox() self.showInstallBtn() self.showResetBtn() self.showStatus() self.checkPIP() # print self.winfo_screenwidth() # print nWindowWidth # print nWindowHeight # print nWindowsPosX # print nWindowsPosY def checkPIP(self): self.printResult("[I] Check PIP Version....\n") self.inputControl("Lock") self.changeRunningState("Running") threading.Thread(target=installPIP).start() # Define Function installPIP # Result box generate def showReportBox(self): self.ResultBoxLabel = Label(self, text="Status Log:", anchor='w', foreground="#000080") self.ResultBoxLabel['font'] = ("Microsoft JhengHei", 16, "bold") self.ResultBoxLabel.place(x=nWindowWidth * 40 / 80, y=nWindowHeight * 2 / 80, width=nWindowWidth * 40 / 80, height=nWindowHeight * 4 / 80) self.ResultBox = ScrolledText(self, state=DISABLED, foreground="#000080") # Load ScrolledText from dll self.ResultBox.place(x=nWindowWidth * 40 / 80, y=nWindowHeight * 6 / 80, width=nWindowWidth * 39 / 80, height=nWindowHeight * 60 / 80) def showExitBtn(self): self.ExitBtn = Button(self, text="Exit", command=self.exitButtonDlg, foreground="#000080") self.ExitBtn.place(x=nWindowWidth * 68 / 80, y=nWindowHeight * 69 / 80, width=nWindowWidth * 10 / 80, height=nWindowHeight * 8 / 80) self.ExitBtn['font'] = ("Microsoft JhengHei", 18, "bold") def showResetBtn(self): self.retBtn = Button(self, text="Reset", command=self.resetButtonDlg, foreground="#000080") self.retBtn.place(x=nWindowWidth * 55 / 80, y=nWindowHeight * 69 / 80, width=nWindowWidth * 10 / 80, height=nWindowHeight * 8 / 80) self.retBtn['font'] = ("Microsoft JhengHei", 18, "bold") def resetButtonDlg(self): if tkMessageBox.askokcancel("Reset", "Do you want to reset and continue to start install !"): self.inputControl("UnLock") self.changeRunningState("Ready") def exitButtonDlg(self): if tkMessageBox.askokcancel("Quit", "Do you want to close the window!"): self.master.destroy() def on_closing(self): if tkMessageBox.askokcancel("Quit", "Do you want to close the windows?"): # tkMessageBox.xxxxx(title, message, options) self.master.destroy() def showCheckFrame(self): self.CheckFrame = LabelFrame(self, text="-.-.- Package List -.-.-", labelanchor="n", foreground="orange") self.CheckFrame['font'] = ("Microsoft JhengHei", 16, "bold") self.CheckFrame.place(x=nWindowWidth * 2 / 80, y=nWindowHeight * 10 / 80, width=nWindowWidth * 37 / 80, height=nWindowHeight * 65 / 80) # Package List Check Box generate def showPackageCheckBox(self): global CheckVar CheckVar = [] self.ListCheckbox = [] for PackageShowListIndex in range(len(PackageShowList)): self.var = IntVar() ############################## self.ListCheckbox.append(Checkbutton(self, text=str( RefinePackageShowList[PackageShowListIndex][0]) + " [ version: " + str( RefinePackageShowList[PackageShowListIndex][1]) + " ] ", variable=self.var, anchor="w")) CheckVar.append(self.var) self.ListCheckbox[PackageShowListIndex].place(x=nWindowWidth * 3 / 80, y=(nWindowHeight * 14 / 80) + ( PackageShowListIndex * nWindowHeight * 9 / 320), width=nWindowWidth * 20 / 80, height=nWindowHeight * 2 / 80) self.printResult("List check box has Initialed\n") printLog("[I][showPackageCheckBox] Checkbox successfully generate") # Check and Uncheck and install button def showInstallBtn(self): self.checkAllBtn = Button(self, text="Select All", command=self.checkAll, foreground="#000080") self.checkAllBtn.place(x=nWindowWidth * 4 / 80, y=nWindowHeight * 65 / 80, width=nWindowWidth * 15 / 80, height=nWindowHeight * 8 / 80) self.checkAllBtn['font'] = ("Microsoft JhengHei", 18, "bold") self.uncheckAllBtn = Button(self, text="Unselect All", command=self.uncheckAll, foreground="#000080") self.uncheckAllBtn.place(x=nWindowWidth * 22 / 80, y=nWindowHeight * 65 / 80, width=nWindowWidth * 15 / 80, height=nWindowHeight * 8 / 80) self.uncheckAllBtn['font'] = ("Microsoft JhengHei", 18, "bold") self.InstallBtn = Button(self, text="Start Install", command=self.installBtn, foreground="#af0000") self.InstallBtn.place(x=nWindowWidth * 40 / 80, y=nWindowHeight * 69 / 80, width=nWindowWidth * 12 / 80, height=nWindowHeight * 8 / 80) self.InstallBtn['font'] = ("Microsoft JhengHei", 18, "bold") def checkAll(self): for i in self.ListCheckbox: i.select() def uncheckAll(self): for i in self.ListCheckbox: i.deselect() self.changeRunningState("UnSelect") def installBtn(self): self.changeRunningState("Running") self.printResult("Install is running...\n") self.inputControl("Lock") threading.Thread(target=self.startInstalling).start() # Status label text and place def showStatus(self): self.StatusText = Label(self, text="State: ", foreground="#000080") self.StatusText['font'] = ("Microsoft JhengHei", 26, "bold") self.StatusText.place(x=nWindowWidth * 2 / 80, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 80, height=nWindowHeight * 8 / 80) self.StatusLabel = Label(self, text="Ready...... ", bg="green") self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold") self.StatusLabel.place(x=nWindowWidth * 10 / 80, y=nWindowHeight * 1 / 80, width=nWindowWidth * 16 / 80, height=nWindowHeight * 8 / 80) # Status Label change Function def changeRunningState(self, RunningorReady): if RunningorReady == "Running": self.printResult("Clicked installbtn,Ready Install...\n") self.StatusLabel.destroy() self.StatusLabel = Label(self, text="Running", bg="red") self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40) self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold") if RunningorReady == "Ready": self.printResult("Getting on ready...\n") self.StatusLabel.destroy() self.StatusLabel = Label(self, text="Ready", bg="green") self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40) self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold") if RunningorReady == "Finish": self.printResult("Process has finished...\n") self.StatusLabel.destroy() self.StatusLabel = Label(self, text="Finish", bg="blue") self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40) self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold") if RunningorReady == "UnSelect": self.printResult("You Clicked Unselect command...\n") self.StatusLabel.destroy() self.StatusLabel = Label(self, text="UnSelect", bg="yellow") self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40) self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold") def inputControl(self, L_state): if L_state == "Lock": for item in self.ListCheckbox: item["state"] = "disabled" self.checkAllBtn['state'] = 'disabled' self.uncheckAllBtn['state'] = 'disabled' self.InstallBtn['state'] = 'disabled' if L_state == "UnLock": for item in self.ListCheckbox: item["state"] = "normal" self.checkAllBtn['state'] = 'normal' self.uncheckAllBtn['state'] = 'normal' self.InstallBtn['state'] = 'normal' # Result box status input def printResult(self, str_Info): self.ResultBox.configure(state='normal') self.ResultBox.insert(END, str_Info) self.ResultBox.configure(state='disabled') def startInstalling(self): for i in range(len(PackageShowList)): if CheckVar[i].get() == 1: PackageInstallDlg.printResult("[I] Searching " + PackageShowList[i] + " requirement...\n") for index in range(len(g_PackageRequirementList)): # requirement in show list if g_PackageRequirementList[index][0] in PackageShowList[i]: for innerindex in range(len(g_PackageRequirementList[index][1])): for j in range(len(RequirementList)): if g_PackageRequirementList[index][1][innerindex] in RequirementList[j]: PackageInstallDlg.printResult("[I] Installing: " + RequirementList[j] + "\n") installpackage(RequirementList[j]) PackageInstallDlg.printResult("[I] Installing: " + PackageShowList[i] + "\n") installpackage(PackageShowList[i]) print "end" # State labe change self.changeRunningState("Finish") self.printResult("╔═══════════════╗\n") self.printResult("║ F i n i s h ! ║\n") self.printResult("╚═══════════════╝\n")
class Main: def __init__(self,app): self.app=app self.win=Toplevel(self.app.app.win) self.win.title('О программе') x,y=600,400 pos=self.win.wm_maxsize()[0]/2-x/2,self.win.wm_maxsize()[1]/2-y/2 self.win.geometry('%sx%s+%s+%s'%(x,y,pos[0],pos[1]-25)) self.win.maxsize(width=x,height=y) self.win.minsize(width=x,height=y) if sys.platform=='win32':self.win.iconbitmap('app/images/icon.ico') self.menu=Menu(self.win,tearoff=0) self.menu.add_command(label="Копировать") Label(self.win,text=self.app.app.version,font=('bold',28)).place(x=180,y=20) Label(self.win,text='Автор: Игорь aka kAIST',font=('bold',18)).place(x=180,y=70) Label(self.win,text='Сайт:',font=('bold',18)).place(x=180,y=100) Label(self.win,image=self.app.app.img['note']).place(x=20,y=20) self.site=Label(self.win,text='http://my-selling.ru',font=tfont.Font(underline=1,size=18),foreground='blue', cursor='hand2') self.site.place(x=250,y=100) self.site.bind('<ButtonRelease>',self.go_to_the_site) self.d_frame=LabelFrame(self.win,text='Поддержи проект',width=590,height=100) self.d_frame.place(x=5,y=150) Label(self.d_frame,text='Вы можете поддержать проект одним из следующих способов:').grid(row=0,column=0,columnspan=10,sticky=N,padx=100) Label(self.d_frame,text='1. WebMoney').grid(row=1,column=0,padx=5,pady=5,sticky=W) self.wm=Entry(self.d_frame,cursor='xterm') self.wm.insert(END,'R415730487974') self.wm.grid(row=1,column=1) self.wm.bind("<Button-3><ButtonRelease-3>", self.show_context_menu) self.wm.bind("<Button-1><ButtonRelease-1>", self.show_context_menu) self.wm2=Entry(self.d_frame,cursor='xterm') self.wm2.insert(END,'Z384919381339') self.wm2.grid(row=1,column=2) self.wm2.bind("<Button-3><ButtonRelease-3>", self.show_context_menu) self.wm2.bind("<Button-1><ButtonRelease-1>", self.show_context_menu) Label(self.d_frame,text='1. Яндекс.Деньги').grid(row=2,column=0,padx=5,pady=5,sticky=W) self.wm3=Entry(self.d_frame,cursor='xterm') self.wm3.insert(END,'4100187212636') self.wm3.grid(row=2,column=1) self.wm3.bind("<Button-3><ButtonRelease-3>", self.show_context_menu) self.wm3.bind("<Button-1><ButtonRelease-1>", self.show_context_menu) Label(self.d_frame,text='3. Платная СМС на номер 4445 с текстом dam 104966 ВАШЕ_ПОЖЕЛЕНИЕ (цена не более 20 р.)').grid(row=3,column=0,padx=5,pady=5,sticky=W,columnspan=3) self.txt=ScrolledText(self.win,width=80,height=6,font=('normal',10),wrap='word') self.txt.place(x=5,y=285) t="""ТАК КАК ПРОГРАММА ЛИЦЕНЗИРУЕТСЯ БЕСПЛАТНО, НА ПРОГРАММУ НЕТ ГАРАНТИИ В СТЕПЕНИ, РАЗРЕШЕННОЙ СООТВЕТСВУЮЩИМ ЗАКОНОМ. ЗА ИСКЛЮЧЕНИЕМ СЛУЧАЕВ, КОГДА В ПИСЬМЕННОМ ВИДЕ СКАЗАНО ИНОЕ, ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИЕ СТОРОНЫ ПРЕДОСТАВЛЯЮТ ПРОГРАММУ "КАК ЕСТЬ" БЕЗ ГАРАНТИЙНЫХ ОБЯЗАТЕЛЬСТВ ЛЮБОГО ВИДА, ЯВНЫХ ИЛИ КОСВЕННЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ТОЛЬКО ИМИ, КОСВЕННЫЕ ГАРАНТИЙНЫЕ ОБЯЗАТЕЛЬСТВА, СВЯЗАННЫЕ С ПОТРЕБИТЕЛЬСКИМИ СВОЙСТВАМИ И ПРИГОДНОСТЬЮ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. ВЕСЬ РИСК, СВЯЗАННЫЙ КАК С КАЧЕСТВОМ, ТАК И С ПРОИЗВОДИТЕЛЬНОСТЬЮ ПРОГРАММЫ, ЛЕЖИТ НА ВАС. ЕСЛИ БУДЕТ ДОКАЗАНО, ЧТО В ПРОГРАММЕ ЕСТЬ ДЕФЕКТЫ, ВЫ ПРИМЕТЕ НА СЕБЯ РАСХОДЫ ПО ВСЕМУ НЕОБХОДИМОМУ ОБСЛУЖИВАНИЮ, РЕМОНТУ ИЛИ ИСПРАВЛЕНИЮ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ, КРОМЕ ТРЕБУЕМЫХ ПО СООТВЕТСВУЮЩЕМУ ЗАКОНУ ИЛИ ОГОВОРЕННЫХ В ПИСЬМЕННОЙ ФОРМЕ, НИ ОДИН ИЗ ОБЛАДАТЕЛЕЙ АВТОРСКИХ ПРАВ И НИ ОДНА ДРУГАЯ СТОРОНА, ИМЕЮЩАЯ ПРАВО ИЗМЕНЯТЬ И/ИЛИ РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК ЭТО РАЗРЕШЕНО ВЫШЕ, НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ПЕРЕД ВАМИ ЗА УЩЕРБ, ВКЛЮЧАЯ ЛЮБОЙ ОБЩИЙ, СПЕЦИФИЧЕСКИЙ, СЛУЧАЙНЫЙ ИЛИ ЛОГИЧЕСКИ ВЫТЕКАЮЩИЙ УЩЕРБ, ПОНЕСЕННЫЙ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ТОЛЬКО ИМИ, ПОТЕРЮ ДАННЫХ ИЛИ НЕТОЧНОСТЬ ОБРАБОТКИ ДАННЫХ ИЛИ ПОТЕРИ, ПОНЕСЕННЫЕ ВАМИ ИЛИ ТРЕТЬИМИ ЛИЦАМИ, ИЛИ НЕСПОСОБНОСТЬ ПРОГРАММЫ РАБОТАТЬ С ЛЮБЫМИ ДРУГИМИ ПРОГРАММАМИ), ДАЖЕ ЕСЛИ ЭТОТ ОБЛАДАТЕЛЬ АВТОРСКИХ ПРАВ БЫЛ ИНФОРМИРОВАН О ВОЗМОЖНОСТИ НАНЕСЕНИЯ ТАКОГО УЩЕРБА.""" self.txt.insert(0.0,t) def go_to_the_site(self,event=None): webbrowser.open('http://my-selling.ru') #self.s=Entry(self.win) #self.s.pack() #self.s.bind("<Button-3><ButtonRelease-3>", self.show_context_menu) def show_context_menu(self,event): w = event.widget w.select_range(0,END) self.menu.entryconfigure("Копировать",command=lambda: w.event_generate("<<Copy>>")) self.menu.tk.call("tk_popup", self.menu, event.x_root, event.y_root)
class MainApp(Tk): """ Represent a main page """ def __init__(self, *args, **kwargs): Tk.__init__(self, *args, **kwargs) self.find_b = PhotoImage(file="Find_button.gif") self.date = date() self.window() def note_storage(self): note_store = NoteStorage() note_store.geometry('450x600+450+90') note_store.title('Note Storage') note_store.resizable(width=False, height=False) note_store.all_note() note_store.mainloop() def create_note(self): title_name = self.title_box.get() note_text = self.note_box.get('1.0', END).encode('utf-8') if title_name != '' and note_text != '': self.title_box.delete(0, END) self.note_box.delete('1.0', END) note_page = Notepage(title_name, note_text) note_page.geometry('350x450+500+150') note_page.title('New note' + ' ' + ':' + ' ' + title_name) note_page.resizable(width=False, height=False) note_page.note_pages(note_page) note_page.mainloop() note_page.destroy() def find_notes(self): find = Findpage() find.geometry('400x50+400+400') #find.resizable(width=False, height=False) find.title('Find your note') find.mainloop() def window(self): """ Display Main window """ #Header# self.header = Frame(self, width=450, height=65, bg='#1E90FF') self.header.place(x=0, y=0) title = Label(self.header, text="NoteThat", font=('MV Boli', 25, 'bold') , bg='#1E90FF', fg='white') title.place(x=15, y=5) self.datetime = Label(self, text=self.date) self.datetime.place(x=325, y=75) #Input# self.title_name = Label(self, text="Title", font=('Arial', 12,)) self.title_name.place(x=20, y=80) self.title_box = Entry(self, width = 58, bg='white', relief=FLAT, font=('AngsanaUPC', 15)) self.title_box.place(x=20, y=110) self.note_text = Label(self, text="Your Note", font=('Arial', 12,)) self.note_text.place(x=20, y=150) self.note_box = ScrolledText(self, font=('AngsanaUPC', 14), width=65, relief=FLAT, bg='white', height=9) self.note_box.place(x=20, y=185) #Button# self.add_note = Button(self, width=12, height=1, text="Add Note", bg='green', relief=FLAT, font=('Arial', 13, 'bold') , command=self.create_note, fg='white', activeforeground='green') self.add_note.place(x=20, y=440) self.add_tag = Button(self, width=12, height=1, text="Add Tags", bg='gray', relief=FLAT, font=('Arial', 13, 'bold')) self.add_tag.place(x=162, y=440) self.find_note = Button(self.header, image=self.find_b, relief=FLAT, bg='gray', font=('Arial', 13, 'bold') , command=self.find_notes, width=68, height=59, overrelief=RIDGE, activebackground='#1E90FF') self.find_note.place(x=376, y=0) self.all = Button(self, width=31, height=2, fg='white', text="Note Storage", bg='#009cff', relief=FLAT, activeforeground='#009cff', font=('Arial', 16, 'bold'), command=self.note_storage) self.all.place(x=20, y=490) #Footer# self.last = Frame(self, bg='#1E90FF', width=450, height=25) self.last.place(x=0, y=575) self.fac = Label(self.last, fg='white', bg='#1E90FF', text="Faculty of Information Technology, KMITL") self.fac.place(x=110, y=3)