About Me

Superb IT Consultant in the local area

Need advisory on IT-based systems for your business or for personal use? Perhaps you require clarification on how to use a new IT system or are looking for some specialised knowledge regarding your existing business’s system. No matter the case, Starter On Website And App Developer is the perfect business for you. I am an IT consultant in the local area that will help you with achieving your personal or business goals using IT systems. To set up an appointment, please message the message form below.

Other Services

My goal is to help individuals and businesses develop software that will help them grow and effectively run their business operations, but this is not simply limited to developing new pieces of software for the back end of the business. I can also advise on best practices for UX, UI, cybersecurity, and other essential aspects of a digital business that may have been overlooked because of time or cost concerns.

Rpad Text Editor

here is my first software application which is fully coded by me on visual studio code with the help of python programming language.....hope will get positive reply by u all.....support me Here is the code ................................................................................................................................................................................................................................................. import tkinter as tk from tkinter import ttk from tkinter import font,colorchooser,filedialog,messagebox import os main_application=tk.Tk() main_application.geometry('1200x800') #if error then try for *=x main_application.title('Rpad text editor') main_application.wm_iconbitmap('icon.ico') ##################################### main menu ############################################### mainmenu=tk.Menu() #file_icons new_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\new.png') open_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\open.png') save_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\save.png') save_as_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\save_as.png') exit_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\exit.png') file=tk.Menu(mainmenu,tearoff=False) #edit_icons copy_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\copy.png') paste_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\paste.png') cut_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\cut.png') clear_all_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\clear_all.png') find_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\find.png') edit=tk.Menu(mainmenu,tearoff=False) #view_icons tool_bar_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\tool_bar.png') status_bar_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\status_bar.png') view=tk.Menu(mainmenu,tearoff=False) #colour theme light_default_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\light_default.png') light_plus_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\light_plus.png') dark_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\dark.png') red_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\red.png') monokai_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\monokai.png') night_blue_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\night_blue.png') colour_theme=tk.Menu(mainmenu,tearoff=False) theme_choice=tk.StringVar() colur_icons=(light_default_icon,light_plus_icon,dark_icon,red_icon,monokai_icon,night_blue_icon) colour_dict={ 'Light Default':('#000000','#ffffff'), 'Light Plus':('#474747','#e0e0e0'), 'Dark':('#c4c4c4','#2d2d2d'), 'Red':('#2d2d2d','#ffe8e8'), 'Monokai':('#d3b774','#474747'), 'Night Blue':('#ededed','#6b9dc2') } #cascade mainmenu.add_cascade(label='File',menu=file) mainmenu.add_cascade(label='Edit',menu=edit) mainmenu.add_cascade(label='View',menu=view) mainmenu.add_cascade(label='Colour theme',menu=colour_theme) #---------------------------------- end main manu ------------------------------------------- ##################################### toolbar ############################################### tool_bar=ttk.Label(main_application) tool_bar.pack(side=tk.TOP,fill=tk.X) #font box font_tuple=tk.font.families() font_family=tk.StringVar() #variable font_box=ttk.Combobox(tool_bar,width=30,textvariable=font_family,state='readonly') font_box['values']=font_tuple font_box.current(font_tuple.index('Arial')) font_box.grid(row=0,column=0,padx=5) #font size font_var=tk.IntVar() font_size=ttk.Combobox(tool_bar,width=14,textvariable=font_var,state='readonly') font_size['values']=tuple(range(8,81)) font_size.current(5) font_size.grid(row=0,column=1,padx=5) #bold button bold_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\bold.png') bold_button=ttk.Button(tool_bar,image=bold_icon) bold_button.grid(row=0,column=2,padx=5) #italic button underline_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\underline.png') underline_button=ttk.Button(tool_bar,image=underline_icon) underline_button.grid(row=0,column=3,padx=5) #italic button italic_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\italic.png') italic_button=ttk.Button(tool_bar,image=italic_icon) italic_button.grid(row=0,column=4,padx=5) #font_colour button font_color_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\font_color.png') font_color_button=ttk.Button(tool_bar,image=font_color_icon) font_color_button.grid(row=0,column=5,padx=5) #align left align_left_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\align_left.png') align_left_button=ttk.Button(tool_bar,image=align_left_icon) align_left_button.grid(row=0,column=6,padx=5) #align center align_center_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\align_center.png') align_center_button=ttk.Button(tool_bar,image=align_center_icon) align_center_button.grid(row=0,column=7,padx=5) #align right align_right_icon=tk.PhotoImage(file=r'C:\Users\admin\new python course\PYPROG\icons2\icons2\align_right.png') align_right_button=ttk.Button(tool_bar,image=align_right_icon) align_right_button.grid(row=0,column=8,padx=5) #---------------------------------- end toolbar ------------------------------------------- ##################################### text editor ############################################### text_editor=tk.Text(main_application) text_editor.config(wrap='word',relief=tk.FLAT) scroll_bar=tk.Scrollbar(main_application) text_editor.focus_set() scroll_bar.pack(side=tk.RIGHT,fill=tk.Y) text_editor.pack(fill=tk.BOTH,expand=True) scroll_bar.config(command=text_editor.yview) text_editor.config(yscrollcommand=scroll_bar.set) #font family and font size functionality current_font_family = 'Arial' current_font_size = 12 def change_font(main_application): global current_font_family current_font_family=font_family.get() text_editor.configure(font=(current_font_family,current_font_size)) def change_font_size(main_application): global current_font_size current_font_size=font_var.get() text_editor.configure(font=(current_font_family,current_font_size)) font_box.bind("<>" , change_font) font_size.bind("<>" , change_font_size) #buttons functionality #bold button functionalty def change_bold(): text_property=tk.font.Font(font=text_editor['font']) if text_property.actual()['weight'] == 'normal': text_editor.configure(font=(current_font_family,current_font_size,'bold')) if text_property.actual()['weight'] == 'bold': text_editor.configure(font=(current_font_family,current_font_size,'normal')) bold_button.configure(command=change_bold) #italic button functionality def change_italic(): text_property=tk.font.Font(font=text_editor['font']) if text_property.actual()['slant'] == 'roman': text_editor.configure(font=(current_font_family,current_font_size,'italic')) if text_property.actual()['slant'] == 'italic': text_editor.configure(font=(current_font_family,current_font_size,'roman')) italic_button.configure(command=change_italic) #underline button functionality def change_underline(): text_property=tk.font.Font(font=text_editor['font']) if text_property.actual()['underline'] == 0: text_editor.configure(font=(current_font_family,current_font_size,'underline')) if text_property.actual()['underline'] == 1: text_editor.configure(font=(current_font_family,current_font_size,'normal')) underline_button.configure(command=change_underline) #font colour functionality def change_font_color(): color_var=tk.colorchooser.askcolor() text_editor.configure(fg=color_var[1]) font_color_button.configure(command=change_font_color) #align functionality #left align def align_left(): text_content=text_editor.get(1.0,'end') text_editor.tag_config('left',justify=tk.LEFT) text_editor.delete(1.0, tk.END) text_editor.insert(tk.INSERT,text_content ,'left') align_left_button.configure(command=align_left) def align_center(): text_content=text_editor.get(1.0,'end') text_editor.tag_config('center',justify=tk.CENTER) text_editor.delete(1.0, tk.END) text_editor.insert(tk.INSERT,text_content ,'center') align_center_button.configure(command=align_center) def align_right(): text_content=text_editor.get(1.0,'end') text_editor.tag_config('right',justify=tk.RIGHT) text_editor.delete(1.0, tk.END) text_editor.insert(tk.INSERT,text_content ,'right') align_right_button.configure(command=align_right) text_editor.configure(font=('Arial',12)) #---------------------------------- end text editor ------------------------------------------- ##################################### main status bar ############################################### status_bar=ttk.Label(main_application,text='Status bar') status_bar.pack(side=tk.BOTTOM) text_changed=False def changed(event=None): global text_changed if text_editor.edit_modified(): text_changed=True words=len(text_editor.get(1.0,'end-1c').split()) characters=len(text_editor.get(1.0,'end-1c')) #get().replace(' ','') status_bar.config(text=f'characters : {characters} words: {words}') text_editor.edit_modified(False) text_editor.bind('<>',changed) #---------------------------------- end main status bar ------------------------------------------- ##################################### main menu functionality ############################################### #file commands #variable url='' #new file functionality def new_file(event=None): global url url='' text_editor.delete(1.0,tk.END) file.add_command(label='New',image=new_icon,compound=tk.LEFT,accelerator='Ctrl+N',command=new_file) #for not overlapping compound is used def open_file(): global url url=filedialog.askopenfilename(initialdir=os.getcwd(),title='Select file',filetypes=(('Text file','*.txt'),('All types','*.*'))) try: with open(url,'r') as fr: text_editor.delete(1.0,tk.END) text_editor.insert(1.0,fr.read()) except FileNotFoundError: return except: return main_application.title(os.path.basename(url)) file.add_command(label='Open',image=open_icon,compound=tk.LEFT,accelerator='Ctrl+O',command=open_file) #save file def save_file1(event=None): global url try: if url: content=str(text_editor.get(1.0,tk.END)) with open(url,'w',encoding='utf-8') as fw: fw.write(content) else: url=filedialog.asksaveasfile(mode='w',defaultextension='.txt',filetypes=(('Text file','*.txt'),('All files','*.*'))) content2=text_editor.get(1.0,tk.END) url.write(content3) url.close() except: return file.add_command(label='Save',image=save_icon,compound=tk.LEFT,accelerator='Ctrl+S',command=save_file1) # #save as functionality def save_as(event=None): global url try: content=str(text_editor.get(1.0,tk.END)) url=filedialog.asksaveasfile(mode = 'w',defaultextension='.txt',filetypes=(('Text file','*.txt'),('All types','*.*'))) url.write(content) url.close() except: return file.add_command(label='Save as',image=save_as_icon,compound=tk.LEFT,accelerator='Ctrl+Alt+N',command=save_as) def exit_func(event=None): global url,text_changed try: if text_changed: mbox=messagebox.askyesnocancel('warning','Do you wanna save the file') if mbox is True: if url: content=str(text_editor.get(1.0,tk.END)) with open(url,'w',encoding='utf-8') as fw: fw.write(content) main_application.destroy() else: content2=str(text_editor.get(1.0,tk.END)) url=filedialog.asksaveasfile(mode = 'w',defaultextension='.txt',filetypes=(('Text file','*.txt'),('All types','*.*'))) url.write(content2) url.close() main_application.destroy() elif mbox is False: main_application.destroy() else: main_application.destroy() except: return file.add_command(label='Exit',image=exit_icon,compound=tk.LEFT,accelerator='Ctrl+Q',command=exit_func) #edit commands #find function def find_func(event=None): def find(): word=find_input.get() text_editor.tag_remove('match','1.0',tk.END) matches=0 if word: start_pos='1.0' while True: start_pos=text_editor.search(word,start_pos,stopindex=tk.END) if not start_pos: break end_pos=f'{start_pos}+{len(word)}c' text_editor.tag_add('match',start_pos,end_pos) matches+=1 start_pos=end_pos text_editor.tag_config('match',foreground='red',background='white') def replace(): word=find_input.get() replace_text=replace_input.get() content=text_editor.get(1.0,tk.END) new_content=content.replace(word,replace_text) text_editor.delete(1.0,tk.END) text_editor.insert(1.0,new_content) #find_dialogue find_dialogue=tk.Toplevel() find_dialogue.geometry('450x250+400+200') find_dialogue.title('Find') find_dialogue.resizable(0,0) #file frame find_frame=ttk.LabelFrame(find_dialogue,text='find/replace') find_frame.pack(pady=20) #labels text_find_label=ttk.Label(find_frame,text='Find :') text_replace_label=ttk.Label(find_frame,text='Replace :') #entry find_input=ttk.Entry(find_frame,width=30) replace_input=ttk.Entry(find_frame,width=30) #buttons find_button=ttk.Button(find_frame,text='Find',command=find) replace_button=ttk.Button(find_frame,text='Replace',command=replace) #label_grid text_find_label.grid(row=0,column=0,padx=4,pady=4) text_replace_label.grid(row=1,column=0,padx=4,pady=4) #entry grid find_input.grid(row=0,column=1,padx=4,pady=4) replace_input.grid(row=1,column=1,padx=4,pady=4) #button grid find_button.grid(row=2,column=0,padx=8,pady=4) replace_button.grid(row=2,column=1,padx=8,pady=4) find_dialogue.mainloop() edit.add_command(label='Copy',image=copy_icon,compound=tk.LEFT,accelerator='Ctrl+C', command=lambda:text_editor.event_generate("")) #for not overlapping compound is used edit.add_command(label='Paste',image=paste_icon,compound=tk.LEFT,accelerator='Ctrl+P', command=lambda:text_editor.event_generate("")) edit.add_command(label='Cut',image=cut_icon,compound=tk.LEFT,accelerator='Ctrl+X', command=lambda:text_editor.event_generate("")) edit.add_command(label='Clear All',image=clear_all_icon,compound=tk.LEFT,accelerator='Ctrl+Alt+X', command=lambda:text_editor.delete(1.0,tk.END)) edit.add_command(label='Find',image=find_icon,compound=tk.LEFT,accelerator='Ctrl+F',command=find_func) #view commands show_toolbar=tk.BooleanVar() show_toolbar.set(True) show_statusbar=tk.BooleanVar() show_statusbar.set(True) def hide_toolbar(): global show_toolbar if show_toolbar: tool_bar.pack_forget() show_toolbar=False else: text_editor.pack_forget() status_bar.pack_forget() tool_bar.pack(side=tk.TOP,fill=tk.BOTH) text_editor.pack(fill=tk.BOTH,expand=True) status_bar.pack(side=tk.BOTTOM) show_toolbar=True def hide_statusbar(): global show_statusbar if show_statusbar: status_bar.pack_forget() show_statusbar=False else: status_bar.pack(side=tk.BOTTOM) show_statusbar=True view.add_checkbutton(label='Tool Bar',onvalue=True,offvalue=0,variable=show_toolbar,image=tool_bar_icon,compound=tk.LEFT,command=hide_toolbar) view.add_checkbutton(label='Status bar',onvalue=1,offvalue=False,variable=show_statusbar,image=status_bar_icon,compound=tk.LEFT,command=hide_statusbar) #colour theme commands def change_theme(): chosen_theme=theme_choice.get() color_tuple=colour_dict.get(chosen_theme) fg_color,bg_color=color_tuple[0],color_tuple[1] text_editor.config(background=bg_color,fg=fg_color,cursor="arrow") count=0 for i in colour_dict: colour_theme.add_radiobutton(label=i,image=colur_icons[count],variable=theme_choice,compound=tk.LEFT,command=change_theme) count+=1 #---------------------------------- end main manu functionality ------------------------------------------- main_application.config(menu=mainmenu) #bind shortcut keys main_application.bind("",new_file) main_application.bind("",open_file) main_application.bind("",save_file1) main_application.bind("",save_as) main_application.bind("",exit_func) main_application.bind("",find_func) main_application.mainloop()

Amenities

Free consultation

Price List

Content Writer on Programmes

Programming Knowledge

Software Expertise

Development Lessons

Send a Message

An email will be sent to the owner