这篇教程基于Python制作一个简单的文章搜索工具写得很实用,希望能帮到您。
前言今天,我无聊的时候做了一个搜索文章的软件,有没有更加的方便快捷不知道,好玩就行了。基于Python tkinter 制作文章搜索软件,都是一些基础的应用。
功能实现
导入模块代码 我们首先做到第一件事是导入模块。 import tkinter as tkimport webbrowserfrom tkinter import ttkimport 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)
效果 
背景图片代码 img = tk.PhotoImage(file='benjing.png')tk.Label(root, image=img).pack() 这行代码创建了一个名为img 的PhotoImage对象,并将其设置为根窗口对象root 的图像。然后,它使用tk.Label 创建一个标签对象,并将图像设置为该标签的图像。最后,它使用pack() 方法将标签对象放置在根窗口对象中。 效果 
搜索文本框 代码 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) 这段代码创建了一个名为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 。 效果 
内容显示界面代码 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) 这段代码创建了一个名为tree_view 的Tkinter Treeview对象,并将根节点设置为root 。show 参数设置为"headings" ,表示显示节点的标题。columns 参数设置为一个包含节点标题、作者、发布时间和链接的列表。tree_view.column() 方法用于设置每个列的宽度和锚点。tree_view.column() 方法接受一个参数,即要设置宽度和锚点的列的名称。tree_view.heading() 方法用于设置每个列的标题。tree_view.pack() 方法用于设置节点的位置和大小,并将节点放置在根窗口对象中。tree_view.fill 参数设置为"both" ,表示填充整个窗口,expand 参数设置为True ,表示展开节点,pady 参数设置为10,表示节点之间的间距。 效果 
搜索内容效果代码到了这里,我们这个框架就写好了,那么,我们如何获取搜索功能呢。、 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 这段代码定义了一个名为search 的函数,该函数接受一个字符串参数word ,并返回一个字符串列表,其中包含符合给定字符串的所有文档的标题、作者和发布时间。 该函数首先创建一个空字符串列表search_list ,然后使用一个循环来搜索所有可能的页面。在每个页面上,它使用requests 库发送一个HTTP GET请求,并将搜索参数作为请求的一部分传递。然后,它将响应的JSON数据解析为一个字典,其中包含每个文档的标题、作者和发布时间。然后,它将每个字典添加到search_list 中,并将搜索列表的长度增加1。 最后,该函数返回search_list ,该列表包含符合给定字符串的所有文档的标题、作者和发布时间。 效果 比如讲,搜索博主“爱吃饼干的小白鼠”,我们看看网站反馈的数据是不是和我们一样的。 
展示内容效果代码接下来,我们就要把上面的内容展示到界面里面。 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'])) 这段代码定义了一个名为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) 这段代码定义了一个名为click 的函数,该函数用于查找键盘上输入的字符串。如果找到了相应的字符串,则调用search() 函数查找包含该字符串的文档并显示它们。get() 方法用于从缓冲区中获取字符串。if key_word 语句检查输入字符串是否包含在search_va 中,如果是,则将search_list 更新为包含相关文档的字符串列表。然后调用show() 函数将其显示在树状图中。 效果 
访问博客网页我们接下来,就实现点击某一行就会访问该文章。 def tree_view_click(): for item in tree_view.selection(): item_text = tree_view.item(item, "values") webbrowser.open(item_text[-1]) 这段代码定义了一个名为tree_view_click 的函数,该函数用于在树状图中选择节点并打开相应的网页。它使用tree_view.selection() 方法获取选中的节点,并使用tree_view.item() 方法获取节点的文本值。然后,它使用webbrowser.open() 方法打开相应的网页。 tree_view.bind("<Button-1>",tree_view_click) 在 Python 中,可以使用 tkinter 模块中的 ttk 子模块来创建树形视图控件。要为树形视图添加点击函数,可以使用 ttk.Treeview 的 __init__ 方法来设置点击事件处理函数。 到此这篇关于基于Python制作一个简单的文章搜索工具的文章就介绍到这了,更多相关Python文章搜索工具内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com! Python实现监控一个程序的运行情况 使用Python和Scrapy实现抓取网站数据 |