




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 從企業(yè)戰(zhàn)略角度探討如何利用區(qū)塊鏈技術(shù)進(jìn)行業(yè)務(wù)創(chuàng)新
- 醫(yī)療團(tuán)隊(duì)建設(shè)的策略與住院醫(yī)師的定位
- 醫(yī)療技術(shù)進(jìn)步下的醫(yī)護(hù)人員教育新方向
- 醫(yī)療設(shè)備與家具的協(xié)同抗菌效果研究
- 以健康醫(yī)療行業(yè)為例的區(qū)塊鏈技術(shù)應(yīng)用及投資計(jì)劃書(shū)
- 藥廠質(zhì)量部工作總結(jié)模版
- 飛蚊癥的臨床護(hù)理
- 醫(yī)療大數(shù)據(jù)技術(shù)在疾病預(yù)防中的運(yùn)用
- 囊性淋巴管瘤的臨床護(hù)理
- 傳媒勞務(wù)合同范例
- 跨越高速公路及省道施工方案
- FZ/T 07004-2019紡織行業(yè)綠色工廠評(píng)價(jià)導(dǎo)則
- 包頭市黃河濕地生態(tài)修復(fù)工程初步設(shè)計(jì)20100713
- 無(wú)人機(jī)智能機(jī)巢行業(yè)調(diào)研報(bào)告
- 小區(qū)物業(yè)服務(wù)合同范本
- 《單跳雙落》說(shuō)課稿范文
- [江西]20萬(wàn)噸自來(lái)水廠工藝圖紙?jiān)O(shè)計(jì)(附58頁(yè)設(shè)計(jì)方案)
- 魔芋栽培技術(shù)講課PPT課件
- 個(gè)人外匯管理業(yè)務(wù)培訓(xùn)(共73頁(yè)).ppt
- 2010年某市人行天橋鋼結(jié)構(gòu)制作安裝合同
- 畢業(yè)設(shè)計(jì)(論文)自助洗車(chē)機(jī)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論