Пример #1
0
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)
Пример #2
0
 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)
Пример #3
0
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)
Пример #4
0
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
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
    "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
Пример #12
0
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'
Пример #13
0
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,'')
Пример #14
0
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()
Пример #15
0
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)
Пример #16
0
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()
Пример #17
0
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")
Пример #18
0
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='没有添加内容')
Пример #19
0
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')
Пример #20
0
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")
Пример #21
0
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)
Пример #22
0
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)