持续创作,加快生长!这是我参与「掘金日新计划 4 月更文挑战」的第30天,点击查看活动详情

前语

今天,我无聊的时分做了一个查找文章的软件,有没有更加的方便快捷不知道,好玩就行了。基于Python tkinter 制作文章查找软件,都是一些基础的应用。

功用完成

python制作搜索工具

导入模块

代码

咱们首要做到第一件事是导入模块。

import tkinter as tk
import webbrowser
from tkinter import ttk
import requests

创立窗口

代码

root = tk.Tk()
root.title('CSDN问题查找')
root.geometry('1000x700+100+100')
root.iconbitmap('search.ico')
root.mainloop()

这段代码创立了一个名为root的Tkinter窗口目标,并设置了窗口的标题和巨细。然后,它运用root.iconbitmap()办法将一个名为search.ico的图标图画设置为窗口的图标。

root.geometry()办法用于设置窗口的方位和巨细,它承受一个参数,即窗口的方位和巨细。在这个例子中,咱们将窗口的方位设置为(1000, 700)并将巨细设置为(100, 100)

作用

python制作搜索工具

背景图片

代码

img = tk.PhotoImage(file='benjing.png')
tk.Label(root, image=img).pack()

python制作搜索工具

这行代码创立了一个名为img的PhotoImage目标,并将其设置为根窗口目标root的图画。然后,它运用tk.Label创立一个标签目标,并将图画设置为该标签的图画。最终,它运用pack()办法将标签目标放置在根窗口目标中。

作用

python制作搜索工具

查找文本框

代码

search_frame = tk.Frame(root)
search_frame.pack(pady=12)
# 创立一个字符串变量
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)

python制作搜索工具

这段代码创立了一个名为search_frame的Tkinter窗口目标,并将其放置在根窗口目标root中。然后,它创立了一个StringVar目标search_va,并将其设置为一个字符串变量。接下来,它创立了一个Label目标tk.Label,并将其放置在search_frame中。tk.Label目标具有一个文本特点和一个字体特点,这儿运用了一个黑体字体和12号字号。tk.Entry目标具有一个文本特点和一个宽度特点,这儿运用了一个30像素的宽度和一个StringVar目标search_va。最终,它创立了一个Button目标tk.Button,并将其放置在search_frame中。tk.Button目标具有一个文本特点、一个字体特点和一个背景特点,这儿运用了一个黑体字体、12号字号和一个背景颜色为#fe6b00

作用

python制作搜索工具

内容显现界面

代码

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='序号')
tree_view.heading('title', text='标题')
tree_view.heading('author', text='作者')
tree_view.heading('date', text='发布时间')
tree_view.heading('link', text='链接')
tree_view.pack(fill=tk.BOTH, expand=False, pady=10)

python制作搜索工具

这段代码创立了一个名为tree_view的Tkinter Treeview目标,并将根节点设置为rootshow参数设置为"headings",表明显现节点的标题。columns参数设置为一个包括节点标题、作者、发布时间和链接的列表。tree_view.column()办法用于设置每个列的宽度和锚点。tree_view.column()办法承受一个参数,即要设置宽度和锚点的列的称号。tree_view.heading()办法用于设置每个列的标题。tree_view.pack()办法用于设置节点的方位和巨细,并将节点放置在根窗口目标中。tree_view.fill参数设置为"both",表明填充整个窗口,expand参数设置为True,表明翻开节点,pady参数设置为10,表明节点之间的距离。

作用

python制作搜索工具

查找内容作用代码

到了这儿,咱们这个框架就写好了,那么,咱们怎么获取查找功用呢。、

def search(word):
    search_list = []
    num = 1
    for page in range(1, 3):
        url = 'https://so.csdn.net/api/v3/search'
        data = {
            'q': word,
            'p': page,
        }
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
        }
        response = requests.get(url=url, params=data, headers=headers)
        for index in response.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)
    return search_list

python制作搜索工具

这段代码界说了一个名为search的函数,该函数承受一个字符串参数word,并返回一个字符串列表,其间包括契合给定字符串的一切文档的标题、作者和发布时间。

该函数首要创立一个空字符串列表search_list,然后运用一个循环来查找一切可能的页面。在每个页面上,它运用requests库发送一个HTTP GET请求,并将查找参数作为请求的一部分传递。然后,它将呼应的JSON数据解析为一个字典,其间包括每个文档的标题、作者和发布时间。然后,它将每个字典增加到search_list中,并将查找列表的长度增加1。

最终,该函数返回search_list,该列表包括契合给定字符串的一切文档的标题、作者和发布时间。

作用

比方讲,查找博主“爱吃饼干的小白鼠”,咱们看看网站反应的数据是不是和咱们相同的。

python制作搜索工具
python制作搜索工具​编辑

展现内容作用代码

接下来,咱们就要把上面的内容展现到界面里边。

def show(search_list):
    # 往树状图中刺进数据
    for index, li in enumerate(search_list):
        tree_view.insert('', index + 1,values=(li['num'], li['title'], li['author'], li['date'], li['link']))

python制作搜索工具

这段代码界说了一个名为show的函数,该函数承受一个字符串列表参数search_list,该列表包括每个文档的标题、作者和发布时间,用于刺进树状图中。

该函数首要运用一个循环来遍历search_list,并运用tree_view.insert()办法将每个文档刺进到树状图中。tree_view.insert()办法承受一个参数,即要刺进的节点的索引和值列表。values参数用于指定节点的值列表。

点击查找功用代码

上面咱们叙述了查找功用代码,以及展现代码。接下来,咱们就要完成这样的功用——咱们在文本框输入“爱吃饼干的小白鼠”,然后,咱们点击C一下,就会在界面显现内容。

(PS—假如大家感兴趣,能够完成一个回车的功用)

def click():
    key_word = search_va.get()
    if key_word:
        search_list = search(word=key_word)
        show(search_list)

python制作搜索工具

这段代码界说了一个名为click的函数,该函数用于查找键盘上输入的字符串。假如找到了相应的字符串,则调用search()函数查找包括该字符串的文档并显现它们。get()办法用于从缓冲区中获取字符串。if key_word句子检查输入字符串是否包括在search_va中,假如是,则将search_list更新为包括相关文档的字符串列表。然后调用show()函数将其显现在树状图中。

作用

python制作搜索工具

拜访博客网页

咱们接下来,就完成点击某一行就会拜访该文章。

def tree_view_click():
    for item in tree_view.selection():
        item_text = tree_view.item(item, "values")
        webbrowser.open(item_text[-1])

python制作搜索工具

这段代码界说了一个名为tree_view_click的函数,该函数用于在树状图中选择节点并翻开相应的网页。它运用tree_view.selection()办法获取选中的节点,并运用tree_view.item()办法获取节点的文本值。然后,它运用webbrowser.open()办法翻开相应的网页。

tree_view.bind("<Button-1>",tree_view_click)

python制作搜索工具

在 Python 中,能够运用tkinter模块中的ttk子模块来创立树形视图控件。要为树形视图增加点击函数,能够运用ttk.Treeview__init__办法来设置点击事件处理函数。

总结

到了这儿,咱们这个功用就完成了,是不是很神奇。查找文章的软件就完成了,有的人说了,何必这么麻烦,直接去官网查找就好了啊。确实,可是经过这个练习,咱们能够学到许多东西。