基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具_(dá)第1頁(yè)
基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具_(dá)第2頁(yè)
基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具_(dá)第3頁(yè)
基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具_(dá)第4頁(yè)
基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具_(dá)第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第基于Python制作一個(gè)簡(jiǎn)單的文章搜索工具目錄前言功能實(shí)現(xiàn)導(dǎo)入模塊創(chuàng)建窗口背景圖片搜索文本框內(nèi)容顯示界面搜索內(nèi)容效果代碼展示內(nèi)容效果代碼點(diǎn)擊搜索功能代碼訪問(wèn)博客網(wǎng)頁(yè)

前言

今天,我無(wú)聊的時(shí)候做了一個(gè)搜索文章的軟件,有沒(méi)有更加的方便快捷不知道,好玩就行了?;赑ythontkinter制作文章搜索軟件,都是一些基礎(chǔ)的應(yīng)用。

功能實(shí)現(xiàn)

導(dǎo)入模塊

代碼

我們首先做到第一件事是導(dǎo)入模塊。

importtkinterastk

importwebbrowser

fromtkinterimportttk

importrequests

創(chuàng)建窗口

代碼

root=tk.Tk()

root.title('CSDN問(wèn)題搜索')

root.geometry('1000x700+100+100')

root.iconbitmap('search.ico')

root.mainloop()

這段代碼創(chuàng)建了一個(gè)名為root的Tkinter窗口對(duì)象,并設(shè)置了窗口的標(biāo)題和大小。然后,它使用root.iconbitmap()方法將一個(gè)名為search.ico的圖標(biāo)圖像設(shè)置為窗口的圖標(biāo)。

root.geometry()方法用于設(shè)置窗口的位置和大小,它接受一個(gè)參數(shù),即窗口的位置和大小。在這個(gè)例子中,我們將窗口的位置設(shè)置為(1000,700)并將大小設(shè)置為(100,100)

效果

背景圖片

代碼

img=tk.PhotoImage(file='benjing.png')

tk.Label(root,image=img).pack()

這行代碼創(chuàng)建了一個(gè)名為img的PhotoImage對(duì)象,并將其設(shè)置為根窗口對(duì)象root的圖像。然后,它使用tk.Label創(chuàng)建一個(gè)標(biāo)簽對(duì)象,并將圖像設(shè)置為該標(biāo)簽的圖像。最后,它使用pack()方法將標(biāo)簽對(duì)象放置在根窗口對(duì)象中。

效果

搜索文本框

代碼

search_frame=tk.Frame(root)

search_frame.pack(pady=12)

#創(chuàng)建一個(gè)字符串變量

search_va=tk.StringVar()

tk.Label(search_frame,text='CSDN搜索',font=('黑體',12)).pack(side=tk.LEFT,padx=6)

tk.Entry(search_frame,relief='flat',width=30,textvariable=search_va).pack(side=tk.LEFT,padx=5,fill='both')

tk.Button(search_frame,text='C一下',font=('黑體',12),relief='flat',bg='#fe6b00').pack(side=tk.LEFT,padx=5)

這段代碼創(chuàng)建了一個(gè)名為search_frame的Tkinter窗口對(duì)象,并將其放置在根窗口對(duì)象root中。然后,它創(chuàng)建了一個(gè)StringVar對(duì)象search_va,并將其設(shè)置為一個(gè)字符串變量。接下來(lái),它創(chuàng)建了一個(gè)Label對(duì)象tk.Label,并將其放置在search_frame中。tk.Label對(duì)象具有一個(gè)文本屬性和一個(gè)字體屬性,這里使用了一個(gè)黑體字體和12號(hào)字號(hào)。tk.Entry對(duì)象具有一個(gè)文本屬性和一個(gè)寬度屬性,這里使用了一個(gè)30像素的寬度和一個(gè)StringVar對(duì)象search_va。最后,它創(chuàng)建了一個(gè)Button對(duì)象tk.Button,并將其放置在search_frame中。tk.Button對(duì)象具有一個(gè)文本屬性、一個(gè)字體屬性和一個(gè)背景屬性,這里使用了一個(gè)黑體字體、12號(hào)字號(hào)和一個(gè)背景顏色為#fe6b00。

效果

內(nèi)容顯示界面

代碼

tree_view=ttk.Treeview(root,show="headings",columns=('num','title','author','date','link'))

tree_view.column("num",width=10,anchor='center')

tree_view.column('title',width=200,anchor='w')

tree_view.column('author',width=10,anchor='center')

tree_view.column('date',width=10,anchor='center')

tree_view.column('link',width=150,anchor='center')

tree_view.heading('num',text='序號(hào)')

tree_view.heading('title',text='標(biāo)題')

tree_view.heading('author',text='作者')

tree_view.heading('date',text='發(fā)布時(shí)間')

tree_view.heading('link',text='鏈接')

tree_view.pack(fill=tk.BOTH,expand=False,pady=10)

這段代碼創(chuàng)建了一個(gè)名為tree_view的TkinterTreeview對(duì)象,并將根節(jié)點(diǎn)設(shè)置為root。show參數(shù)設(shè)置為headings,表示顯示節(jié)點(diǎn)的標(biāo)題。columns參數(shù)設(shè)置為一個(gè)包含節(jié)點(diǎn)標(biāo)題、作者、發(fā)布時(shí)間和鏈接的列表。tree_view.column()方法用于設(shè)置每個(gè)列的寬度和錨點(diǎn)。tree_view.column()方法接受一個(gè)參數(shù),即要設(shè)置寬度和錨點(diǎn)的列的名稱(chēng)。tree_view.heading()方法用于設(shè)置每個(gè)列的標(biāo)題。tree_view.pack()方法用于設(shè)置節(jié)點(diǎn)的位置和大小,并將節(jié)點(diǎn)放置在根窗口對(duì)象中。tree_view.fill參數(shù)設(shè)置為both,表示填充整個(gè)窗口,expand參數(shù)設(shè)置為T(mén)rue,表示展開(kāi)節(jié)點(diǎn),pady參數(shù)設(shè)置為10,表示節(jié)點(diǎn)之間的間距。

效果

搜索內(nèi)容效果代碼

到了這里,我們這個(gè)框架就寫(xiě)好了,那么,我們?nèi)绾潍@取搜索功能呢。、

defsearch(word):

search_list=[]

num=1

forpageinrange(1,3):

url='/api/v3/search'

data={

'q':word,

'p':page,

headers={

'user-agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/Safari/537.36'

response=requests.get(url=url,params=data,headers=headers)

forindexinresponse.json()['result_vos']:

title=index["title"].replace('em','').replace('/em','')

author=index["nickname"].replace('em','').replace('/em','')

dit={

'num':num,

'title':title,

'author':author,

'date':index['create_time_str'],

'link':index['url'],

num+=1

search_list.append(dit)

returnsearch_list

這段代碼定義了一個(gè)名為search的函數(shù),該函數(shù)接受一個(gè)字符串參數(shù)word,并返回一個(gè)字符串列表,其中包含符合給定字符串的所有文檔的標(biāo)題、作者和發(fā)布時(shí)間。

該函數(shù)首先創(chuàng)建一個(gè)空字符串列表search_list,然后使用一個(gè)循環(huán)來(lái)搜索所有可能的頁(yè)面。在每個(gè)頁(yè)面上,它使用requests庫(kù)發(fā)送一個(gè)HTTPGET請(qǐng)求,并將搜索參數(shù)作為請(qǐng)求的一部分傳遞。然后,它將響應(yīng)的JSON數(shù)據(jù)解析為一個(gè)字典,其中包含每個(gè)文檔的標(biāo)題、作者和發(fā)布時(shí)間。然后,它將每個(gè)字典添加到search_list中,并將搜索列表的長(zhǎng)度增加1。

最后,該函數(shù)返回search_list,該列表包含符合給定字符串的所有文檔的標(biāo)題、作者和發(fā)布時(shí)間。

效果

比如講,搜索博主愛(ài)吃餅干的小白鼠,我們看看網(wǎng)站反饋的數(shù)據(jù)是不是和我們一樣的。

展示內(nèi)容效果代碼

接下來(lái),我們就要把上面的內(nèi)容展示到界面里面。

defshow(search_list):

#往樹(shù)狀圖中插入數(shù)據(jù)

forindex,liinenumerate(search_list):

tree_view.insert('',index+1,values=(li['num'],li['title'],li['author'],li['date'],li['link']))

這段代碼定義了一個(gè)名為show的函數(shù),該函數(shù)接受一個(gè)字符串列表參數(shù)search_list,該列表包含每個(gè)文檔的標(biāo)題、作者和發(fā)布時(shí)間,用于插入樹(shù)狀圖中。

該函數(shù)首先使用一個(gè)循環(huán)來(lái)遍歷search_list,并使用tree_view.insert()方法將每個(gè)文檔插入到樹(shù)狀圖中。tree_view.insert()方法接受一個(gè)參數(shù),即要插入的節(jié)點(diǎn)的索引和值列表。values參數(shù)用于指定節(jié)點(diǎn)的值列表。

點(diǎn)擊搜索功能代碼

上面我們講述了搜索功能代碼,以及展示代碼。接下來(lái),我們就要實(shí)現(xiàn)這樣的功能我們?cè)谖谋究蜉斎霅?ài)吃餅干的小白鼠,然后,我們點(diǎn)擊C一下,就會(huì)在界面顯示內(nèi)容。

(PS如果大家感興趣,可以實(shí)現(xiàn)一個(gè)回車(chē)的功能)

defclick():

key_word=search_va.get()

ifkey_word:

search_list=search(word=key_word)

show(search_list)

這段代碼定義了一個(gè)名為click的函數(shù),該函數(shù)用于查找鍵盤(pán)上輸入的字符串。如果找到了相應(yīng)的字符串,則調(diào)用search()函數(shù)查找包含該字符串的文檔并顯示它們。get()方法用于從緩沖區(qū)中獲取字符串。ifkey_word語(yǔ)句檢查輸入字符串是否包含在search_va中,如果是,則將search_list更新為包含相關(guān)文檔的字符串列表。然后調(diào)用show()函數(shù)將其顯示在樹(shù)狀圖中。

效果

訪問(wèn)博客網(wǎng)頁(yè)

我們接下來(lái),就實(shí)現(xiàn)點(diǎn)擊某一行就會(huì)訪問(wèn)該文章。

deftree_view_click():

foritemintree_view.selection():

item_text=tree_view.item(item,"values")

webbrowser.open(item_text[-1])

這段代碼定義了一個(gè)名為tree_view_click的函數(shù),該函數(shù)用于在樹(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論