On Friday, February 3, 2017 at 5:35:13 PM UTC+5:30, Meeran Rizvi wrote: > Hello guys, > Here i am creating a GUI which will act as a search engine. > When you search for a data in search box it will fetch the results from the > very first page in browser and it is displayed in a Text widget > When the TOP value is 10 it should display only the first 10 results based on > numbers.if it is 20 it should display first 20 results based on the number. > How should i do that? > Here is my script > <python> > from Tkinter import * > import mechanize > from bs4 import BeautifulSoup > root = Tk() > > def clear_search():#Reset the search field > Search.delete(0,END) > Result.delete("1.0",END) > > def fun(self=0): > new = Search.get() > url = "https://duckduckgo.com/" > br = mechanize.Browser() > br.set_handle_robots(False) > br.open(url) > br.select_form(name="x") > br["q"] = str(new) > res = br.submit() > content = res.read() > #print content > soup = BeautifulSoup(content,"html.parser") > mylink = soup.find_all('a') > v = 0 > for i in mylink: > try: > if i.attrs['class'][0] == "result__a": > v = v + 1 > Result.insert(END,v) > Result.insert(END,i.text) > Result.insert(END,'\n') > elif i.attrs['class'][0] == "result__snippet": > Result.insert(END,i.text) > Result.insert(END,'\n') > Result.insert(END,i.attrs['href']) > Result.insert(END,'\n ') > > Result.insert(END,'--------------------------------------------------------------------------') > > except KeyError: > pass > > > with open("result1.xls", "w") as f: > f.write(content) > > Value = Label(root,text="Value:", font="-weight bold") > Value.grid(row=0,column=0,padx=15) > > Search = Entry(root,width=50) > Search.grid(row=0,column=1) > > Top = Label(root,text="TOP",font="-weight bold") > Top.grid(row=1,column=0) > > var = StringVar(root) > var.set('10') > > Dropdownlist = OptionMenu(root,var,'10','20','50','100') > Dropdownlist.grid(row=1,column=1,sticky="w") > > > Go = Button(root,text="GO",width=5,command=fun) > Go.bind("<Key>",fun) > Go.grid(row=1,column=1) > > > > > Reset = Button(root,text="RESET",width=5,command=clear_search) > Reset.grid(row=1,column=1,sticky="e") > > Result = Text(root,height=20,width=75) > Result.grid(row=2,column=1,padx=50,pady=10) > Scroll = Scrollbar(root,command=Result.yview) > Scroll.grid(row=2,column=2,sticky=N+S) > Result.config(yscrollcommand=Scroll.set) > > root.mainloop() > > </python>
Here i got it,using [var.get()] When the Top value is change to 10 it displays only the first 10 results,if it is changed to 20 it displays first 20 results.But i got a problem with my GUI the scroll bar height is not same as my Text widget.even i used sticky its height remains to be short only. <python> from Tkinter import * import mechanize from bs4 import BeautifulSoup root = Tk() options = ["10","20","30"] var = StringVar(root) var.set('10') def clear_search():#Reset the search field Search.delete(0,END) Result.delete("1.0",END) def fun(self=0): new = Search.get() url = "https://duckduckgo.com/" br = mechanize.Browser() br.set_handle_robots(False) br.open(url) br.select_form(name="x") br["q"] = str(new) res = br.submit() content = res.read() #print content soup = BeautifulSoup(content,"html.parser") mylink = soup.find_all('a') v = 1 b = var.get() for i in mylink: try: if v <= int(b): if i.attrs['class'][0] == "result__a": Result.insert(END,v ) Result.insert(END,i.text) Result.insert(END,'\n') elif i.attrs['class'][0] == "result__snippet": Result.insert(END,i.text) Result.insert(END,'\n') Result.insert(END,i.attrs['href']) Result.insert(END,'\n ') Result.insert(END,'--------------------------------------------------------------------') v = v + 1 except KeyError: pass with open("result1.xls", "w") as f: f.write(content) Value = Label(root,text="Value:", font="-weight bold") Value.grid(row=0,column=0,sticky="W") Search = Entry(root,width=50) Search.grid(row=0,column=1) Top = Label(root,text="TOP",font="-weight bold") Top.grid(row=0,column=2,sticky="W") Go = Button(root,text="GO",width=5,command=fun) Go.bind("<Key>",fun) Go.grid(row=0,column=4,sticky="W") Dropdownlist = OptionMenu(root,var,*options) Dropdownlist.grid(row=0,column=3,padx=5,sticky="W") Reset = Button(root,text="RESET",width=5,command=clear_search) Reset.grid(row=0,column=5,padx=5,sticky="W") Result = Text(root,height=20,width=69) Result.place(x=10, y=40) Scroll = Scrollbar(root,command=Result.yview) Scroll.grid(row=1,column=6,sticky=N) Result.config(yscrollcommand=Scroll.set) root.mainloop() </python> -- https://mail.python.org/mailman/listinfo/python-list