|
| 1 | +import webbrowser |
| 2 | +from tkinter import * |
| 3 | +import urllib.request |
| 4 | +from tkinter.colorchooser import * |
| 5 | +from tkinter import ttk |
| 6 | +from tkinter.filedialog import askopenfilename |
| 7 | +import re |
| 8 | + |
| 9 | +#Setting structure of the browser window and variable declarations. |
| 10 | +root = Tk() |
| 11 | +root.wm_title("CosmoNet web Browser ") |
| 12 | +root.iconbitmap('favicon.ico') |
| 13 | +url1='http://www.gmail.com' |
| 14 | +url2='http://www.yahoomail.com' |
| 15 | +url3='http://www.youtube.com' |
| 16 | +url4='http://www.facebook.com' |
| 17 | +url5='http://www.github.com' |
| 18 | +url6='http://www.linkedin.com' |
| 19 | +url7='http://www.firefox.com' |
| 20 | +url8='http://www.bing.com' |
| 21 | +url9='http://www.yahoo.com' |
| 22 | + |
| 23 | +scrollbar = Scrollbar(root) |
| 24 | +scrollbar.pack(side=RIGHT, fill=Y) |
| 25 | + |
| 26 | + |
| 27 | +frame=Frame(root) |
| 28 | +frame.pack(side=BOTTOM) |
| 29 | +b1=ttk.Button(frame, command=lambda aurl=url7:OpenUrl(aurl)) |
| 30 | +b1.pack(side=LEFT) |
| 31 | +m1=PhotoImage(file="firefox.png") |
| 32 | +b1.config(image=m1) |
| 33 | +tm1=m1.subsample(3,3) |
| 34 | +b1.config(image=tm1) |
| 35 | +b2=ttk.Button(frame, command=lambda aurl=url8:OpenUrl(aurl)) |
| 36 | +b2.pack(side=LEFT) |
| 37 | +m2=PhotoImage(file="bing.png") |
| 38 | +b2.config(image=m2) |
| 39 | +tm2=m2.subsample(6,6) |
| 40 | +b2.config(image=tm2) |
| 41 | +b3=ttk.Button(frame, command=lambda aurl=url9:OpenUrl(aurl)) |
| 42 | +b3.pack(side=LEFT) |
| 43 | +m3=PhotoImage(file="y.png") |
| 44 | +b3.config(image=m3) |
| 45 | +tm3=m3.subsample(6,6) |
| 46 | +b3.config(image=tm3) |
| 47 | +Label(root,text='Quick Links : ',font=("Helvetica",16)).pack(side=BOTTOM) |
| 48 | + |
| 49 | +#This is used to open the apps specified in menu bar in our default browser. |
| 50 | +def OpenUrl(url): |
| 51 | + webbrowser.open_new(url) |
| 52 | + |
| 53 | +#This is used to open the color dialog box under Settings tab. |
| 54 | +def getColor(): |
| 55 | + color = askcolor() |
| 56 | + |
| 57 | +#This is used to open the downloads folder under downloads tab. |
| 58 | +def callback(): |
| 59 | + name= askopenfilename() |
| 60 | + |
| 61 | + |
| 62 | +#The following functions are used to clear display area and URL field when back button is clicked. |
| 63 | +def clear_text(): |
| 64 | + text.delete(1.0,'end') |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | +def clear_entry(): |
| 69 | + e1.delete(0,'end') |
| 70 | + |
| 71 | + |
| 72 | +def sequence(*functions): |
| 73 | + def func(*args, **kwargs): |
| 74 | + return_value = None |
| 75 | + for function in functions: |
| 76 | + return_value = function(*args, **kwargs) |
| 77 | + return return_value |
| 78 | + return func |
| 79 | + |
| 80 | +"""As soon as Go button is clicked, the data recieved from the server in form of html code is parsed and displayed |
| 81 | + in the text display area.""" |
| 82 | +#go button |
| 83 | +def go(): |
| 84 | + lbl.config(image='') |
| 85 | + url=e1.get() |
| 86 | + req = urllib.request.Request(url) |
| 87 | + resp = urllib.request.urlopen(req) |
| 88 | + respData = resp.read() |
| 89 | + initial = str(respData)[2:-1] |
| 90 | + lines = initial.split('\\n') |
| 91 | + text.insert(INSERT, lines) |
| 92 | + back.config(relief=RAISED) |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | + |
| 97 | +#menubar |
| 98 | +menu=Menu(root) |
| 99 | +root.config(menu=menu) |
| 100 | +subMenu=Menu(menu) |
| 101 | +menu.add_cascade(label="Apps",menu=subMenu) |
| 102 | +subMenu.add_command(label="Gmail", command=lambda aurl=url1:OpenUrl(aurl)) |
| 103 | +subMenu.add_command(label="Y! Mail", command=lambda aurl=url2:OpenUrl(aurl)) |
| 104 | +subMenu.add_command(label="Youtube", command=lambda aurl=url3:OpenUrl(aurl)) |
| 105 | +subMenu.add_command(label="Facebook", command=lambda aurl=url4:OpenUrl(aurl)) |
| 106 | +subMenu.add_command(label="Github", command=lambda aurl=url5:OpenUrl(aurl)) |
| 107 | +subMenu.add_command(label="LinkedIn", command=lambda aurl=url6:OpenUrl(aurl)) |
| 108 | +subMenu.add_separator() |
| 109 | +editMenu=Menu(menu) |
| 110 | +menu.add_cascade(label="Settings",menu=editMenu) |
| 111 | +editMenu.add_command(label="Themes and Colors", command=getColor) |
| 112 | +editMenu.add_command(label="History") |
| 113 | +editMenu.add_command(label="Connect account...") |
| 114 | +editMenu.add_command(label="Exit", command=root.quit) |
| 115 | +editMenu=Menu(menu) |
| 116 | +menu.add_cascade(label="Bookmarks",menu=editMenu) |
| 117 | +editMenu.add_command(label="View") |
| 118 | +editMenu.add_command(label="Add bookmark") |
| 119 | +editMenu=Menu(menu) |
| 120 | +menu.add_cascade(label="Tools",menu=editMenu) |
| 121 | +editMenu.add_command(label="Inspect Element") |
| 122 | +editMenu.add_command(label="Manage Extensions") |
| 123 | +editMenu.add_command(label="Developer Tools") |
| 124 | +editMenu=Menu(menu) |
| 125 | +menu.add_cascade(label="Downloads",menu=editMenu) |
| 126 | +editMenu.add_command(label="Open Downloads Folder", command=callback) |
| 127 | +#Buttons and field |
| 128 | + #declaration |
| 129 | +itiger=PhotoImage(file="cosmo.png") |
| 130 | +tiger= Label(root, image=itiger ) |
| 131 | +back= Button(root, relief=SUNKEN, command=sequence(clear_entry, clear_text)) |
| 132 | +iback=PhotoImage(file="back.gif") |
| 133 | +back.config(image=iback) |
| 134 | +fwd= Button(root, relief=SUNKEN) |
| 135 | +ifwd=PhotoImage(file="fwd.gif") |
| 136 | +fwd.config(image=ifwd) |
| 137 | +refresh=Button(root) |
| 138 | +irel=PhotoImage(file="refresh.gif") |
| 139 | +refresh.config(image=irel) |
| 140 | +stop=Button(root) |
| 141 | +istop=PhotoImage(file="close.gif") |
| 142 | +stop.config(image=istop) |
| 143 | +l1= Label(root, text="URL:") |
| 144 | +e1= Entry(root, font=("Helvetica",12)) |
| 145 | +go=Button(root, text="Go", command = go) |
| 146 | +text = Text(root, bd=4, yscrollcommand=scrollbar.set) |
| 147 | +scrollbar.config(command=text.yview) |
| 148 | + |
| 149 | + |
| 150 | +#placement of widgets |
| 151 | +tiger.place(x=10, y=10, height= 80, width=100) |
| 152 | +back.place(x=120, y=30, height=30, width= 40) |
| 153 | +fwd.place(x=170, y=30, height= 30, width= 40) |
| 154 | +refresh.place(x=220, y=30, height= 30, width= 30) |
| 155 | +l1.place(x=260, y=30, height= 30, width=50) |
| 156 | +e1.place(x=300, y=30, height= 30, width= 900) |
| 157 | +stop.place(x=1200, y=30, height= 30, width= 30) |
| 158 | +go.place(x=1250, y=30, height=30, width= 40) |
| 159 | +text.place(x=10, y=100, height=510, width= 1320) |
| 160 | +im=PhotoImage(file="im.png") |
| 161 | +lbl=Label(text, image=im) |
| 162 | +lbl.pack() |
| 163 | + |
| 164 | +root.mainloop() |
0 commit comments