前言
大家早好、午好、晚好吖 ❤ ~
今天博主给大家带来一个问题搜索解答器!!
需要素材
以及一双慧手和一个灵活的脑子~
效果展示
代码展示
导入模块
import requests
import tkinter as tk
from tkinter import ttk
import webbrowser
- 1
- 2
- 3
- 4
def search(word):
search_list = []
num = 0
for page in range(1, 4):
url = 'https://so.csdn.net/api/v3/search'
data = {
'q': word,
't': 'all',
'p': page,
's': '0',
'tm': '0',
'lv': '-1',
'ft': '0',
'l': '',
'u': '',
'ct': '-1',
'pnt': '-1',
'ry': '-1',
'ss': '-1',
'dct': '-1',
'vco': '-1',
'cc': '-1',
'sc': '-1',
'akt': '-1',
'art': '-1',
'ca': '-1',
'prs': '',
'pre': '',
'ecc': '-1',
'ebc': '-1',
'urw': '',
'ia': '1',
'dId': '',
'cl': '-1',
'scl': '-1',
'tcl': '-1',
'platform': 'pc',
}
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>', '')
dit = {
'num': num,
'title': title,
'author': index['nickname'],
'date': index['create_time_str'],
'link': index['url'],
}
num += 1
search_list.append(dit)
return search_list
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
def show(search_list):
# 往树状图中插入数据
for index, stu in enumerate(search_list):
tree_view.insert('', index + 1,
values=(stu['num'], stu['title'], stu['author'], stu['date'], stu['link']))
- 1
- 2
- 3
- 4
- 5
def click():
key_word = search_va.get()
if key_word:
search_list = search(word=key_word)
# 往树状图中插入数据
show(search_list)
- 1
- 2
- 3
- 4
- 5
- 6
# 单击 获取当前点击行的值
def tree_view_click(event):
# 遍历选中的元素
for item in tree_view.selection():
# 获取选中元素的值
item_text = tree_view.item(item, "values")
# 打印选中元素的值
# print(item_text)
webbrowser.open(item_text[-1])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
源码、素材电子书点击这里
界面
root = tk.Tk()
root.title('CSDN问题搜索')
root.geometry('900x700+100+100')
root.iconbitmap('search.ico')
img = tk.PhotoImage(file='封面.png')
tk.Label(root, image=img).pack()
search_frame = tk.Frame(root)
search_frame.pack(pady=10)
search_va = tk.StringVar()
tk.Label(search_frame, text='问题描述(更多资源加?君羊:261823976):', font=('黑体', 15)).pack(side=tk.LEFT, padx=5)
tk.Entry(search_frame, relief='flat', width=30, textvariable=search_va).pack(side=tk.LEFT, padx=5, fill='both')
tk.Button(search_frame, text='搜索一下', font=('黑体', 12), relief='flat', bg='#fe6b00', command=click).pack(side=tk.LEFT,padx=5)
columns = ("num", "title", "author", "date", "link")
columns_value = ('序号', '标题', '作者', '发布时间', '链接')
# 表格
tree_view = ttk.Treeview(root, show="headings", columns=columns)
tree_view.column('num', width=1, anchor='center')
tree_view.column('title', width=150, anchor='w')
tree_view.column('author', width=10, anchor='center')
tree_view.column('date', width=10, anchor='center')
tree_view.column('link', width=30, 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=True, pady=5)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
鼠标左键抬起 点击触发事件 可以重复触发
tree_view.bind('<ButtonRelease-1>', tree_view_click)
root.mainloop()
- 1
- 2
PS:源码如有需要的小伙伴可以加下方的群去找管理员免费领取
尾语 ?
好了,今天的分享就差不多到这里了!
完整代码、视频讲解、疑惑解答直接点击下方名片自取即可。
宁外给大家推荐一个好的教程:
【48小时搞定全套教程!你和大佬只有一步之遥【python教程】
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!