73.Python第三方库安装教程(超详细)
[状态]
我已经安装了这个库,所以这里就不展示图片了。后面有安装的库的图片,如果你不知道,请参考下面的文章。
【请求库的作用】
请求库的工作是发送HTTP 请求并处理响应。
它可以发送GET、POST、PUT 和DELETE 等请求,并支持HTTPS、cookie 和session 等功能。
它还可以处理JSON、XML 和其他格式的数据。
requests 库简化了HTTP 请求的处理,并使Python 程序更容易与Web 服务器交互。
2.5 PySimpleGUI 库PySimpleGUI 是必须安装的第三方库。
【pip安装库代码】
pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple/PySimpleGUI
安装过程如下图所示。
5-3 【什么是GUI】
GUI是Graphical User Interface的缩写,中文译为图形用户界面。
图形化[?raf?k(?)l]:图形化。
接口[?nt?fe?s]:接口。
它是一种以图形方式显示计算机操作界面并允许用户通过鼠标、键盘等输入设备与计算机进行交互的技术。
随着GUI的出现,用户可以通过图形界面更直观地操作计算机,而无需记住复杂的命令行指令。
常见的GUI 包括适用于Windows、Mac OS 和Linux 等操作系统的桌面界面。
【PySimpleGUI的作用】
PySimpleGUI 是一个用于创建图形用户界面的Python 库。
提供一种易于使用的方法来创建跨平台GUI 应用程序。
它旨在使GUI 开发变得简单、快速、易于理解和易于维护。
PySimpleGUI 支持多种GUI 工具包,包括Tkinter、Qt、WxPython 和Pygame。
它可用于创建多种类型的GUI 应用程序,包括桌面应用程序、游戏和数据可视化工具。
2.6 Retry 库Retry 是必须安装的第三方库。
【pip安装库代码】
pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple/retrying
【重试库的作用】
重试:重试。
重试库的作用是提供一种简单的方法来添加重试逻辑,可以在函数执行失败时自动重试。
这有助于处理一些不稳定的操作,如网络请求、数据库连接等,可以提高程序的健壮性和可靠性。
3、源码上面的所有库都安装完成后,就可以直接将下面的代码复制到你的py文件中了。
然后单击运行。
进口商品
进口金塔拉库存
导入网络浏览器
导入请求
importtkinter.messageboxasmes_box
导入PySimpleGUIassg
来自tkinterimportttk
重试导入重试自
类SetUI(对象):
””
音乐弹出界面
””
def__init__(自身,体重=1000,身高=600):
self.ui_weight=体重
self.ui_height=高度
self.title=’好课精选音乐破解软件’
self.ui_root=tk.Tk(类名=self.title)
self.ui_url=tk.StringVar()
self.ui_var=tk.IntVar()
self.ui_var.set(1)
self.show_result=无
self.song_num=无
self.response_data=无
self.song_url=无
self.song_name=无
self.song_author=无
defset_ui(自身):
””
设置一个简单的UI界面
: 返回:
””
#框架空间
Frame_1=tk.Frame(self.ui_root)
Frame_2=tk.Frame(self.ui_root)
Frame_3=tk.Frame(self.ui_root)
Frame_4=tk.Frame(self.ui_root)
#ui界面菜单设计
ui_menu=tk.Menu(self.ui_root)
self.ui_root.config(菜单=ui_menu)
file_menu=tk.Menu(ui_menu,tearoff=0)
ui_menu.add_cascade(label=’menu’,menu=file_menu)
#file_menu.add_command(label=’步骤’,command=lambda:webbrowser.open(‘www.baidu.com’))
#file_menu.add_command(label=’关于作者’, command=lambda:webbrowser.open(‘www.baidu.com’))
file_menu.add_command(label=’退出’,command=self.ui_root.quit)
#控制内容设置
Choice_passageway=tk.Label(frame_1,text=’请选择音乐搜索频道:’,padx=10,pady=10)
#passageway_button_1=tk.Radiobutton(frame_1,text=’COOL’,variable=self.ui_var,value=1,width=10,height=3)
#passageway_button_2=tk.Radiobutton(frame_1,text=’网易云’,variable=self.ui_var,value=2,width=10,height=3)
#passageway_button_3=tk.Radiobutton(frame_1,text=’QQ音乐’,variable=self.ui_var,value=3,width=10,height=3)
#passageway_button_4=tk.Radiobutton(frame_1,text=’COOL’,variable=self.ui_var,value=4,width=10,height=3)
input_link=tk.Label(frame_2,text=’请输入歌曲名称或歌手:’)
Entry_style=tk.Entry(frame_2,textvariable=self.ui_url,highlightcolor=’紫红色’,highlightthickness=1,
宽度=35)
label2=tk.Label(frame_2,text=”)
play_button=tk.Button(frame_2,text=’搜索’,font=(‘Katai’,11),fg=’紫色’,width=2,height=1,
命令=self.get_KuWoMusic)
label3=tk.Label(frame_2,text=”)
#表格样式
columns=(‘序号’,’歌手’,’歌曲’,’专辑’)
self.show_result=ttk.Treeview(frame_3,height=20,show=’标题’,columns=columns)
下载
download_button=tk.Button(frame_4,text=’下载’,font=(‘Katai’,11),fg=’紫色’,宽度=6,高度=1,padx=5,
稻田=5,命令=self.download_music)
#控制布局
frame_1.pack()
frame_2.pack()
frame_3.pack()
frame_4.pack()
Choice_passageway.grid(行=0,列=0)
#passageway_button_1.grid(行=0,列=1)
#passageway_button_2.grid(行=0,列=2)
#passageway_button_3.grid(行=0,列=3)
#passageway_button_4.grid(行=0,列=4)
input_link.grid(行=0,列=0)
Entrystyle.grid(行=0,列=1)
label2.grid(行=0,列=2)
play_button.grid(行=0,列=3,ipadx=10,ipady=10)
label3.grid(行=0,列=4)
self.show_result.grid(行=0,列=4)
download_button.grid(行=0,列=5)
#设置标题
self.show_result.Heading(‘序列号’,text=’序列号’)
self.show_result.Heading(‘歌手’,text=’歌手’)
self.show_result.Heading(‘歌曲’,text=’歌曲’)
self.show_result.Heading(‘专辑’,text=’专辑’)
#设置列
self.show_result.column(‘序列号’,width=100,anchor=’center’)
self.show_result.column(‘歌手’,width=200,anchor=’center’)
self.show_result.column(‘歌曲’,width=200,anchor=’center’)
self.show_result.column(‘相册’,width=300,anchor=’center’)
#鼠标点击
self.show_result.bind(‘ButtonRelease-1’,self.get_song_url)
@重试(stop_max_attempt_number=5)
defget_KuWoMusic(自我):
””
得到很酷的音乐
: 返回:
””
#清除树形表中的数据
foriteminself.show_result.get_children():
self.show_result.delete(项目)
标题={
‘接受’:’application/json,text/plain,*/*’,
‘接受编码’:’gzip,deflate’,
‘接受语言’:’zh-CN,q=0.9′,
‘缓存控制’ : ‘无缓存’,
‘连接’:’保持活动’,
‘csrf’:’HH3GHIQ0RYM’,
‘推荐人’:’http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6′,
‘用户代理’:’Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)’
‘Chrome/99.0.4844.51Safari/537.36’,
‘Cookie’:’_ga=GA1.2.218753071.1648798611;_gid=GA1.2.144187149.1648798611;_gat=1;’
‘hm_lvt_cdb524f42f0ce19b
169a8071123a4797=1648798611;’
‘hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1648798611;kw_token=HH3GHIQ0RYM’
}
search_input=self.ui_url.get()
iflen(搜索输入)0:
search_url=’http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?’
搜索数据={
‘键’:search_input,
‘pn’:’1′,
‘rn’:’80’,
‘https 状态’:’1′,
‘reqId’:’858597c1-b18e-11ec-83e4-9d53d2ff08ff’
}
尝试:
self.response_data=requests.get(search_url,params=search_data,headers=headers,timeout=20).json()
Songs_data=self.response_data[‘data’][‘list’]
ifint(self.response_data[‘数据’][‘总计’])=0:
mes_box.showerror(title=’错误’,message=’搜索:{} 不存在。’.format(search_input))
: 其他
foriinrange(len(歌曲数据)):
self.show_result.insert(”,i,values=(i+1,songs_data[i][‘艺术家’],songs_data[i][‘姓名’],
歌曲数据[i][‘专辑’]))
异常超时错误:
mes_box.showerror(title=’错误’,message=’搜索超时。请重新输入并重新搜索!’)
: 其他
mes_box.showerror(title=’错误’,message=’您还没有输入您要搜索的歌曲或歌手,请输入搜索!’)
defget_song_url(自身,事件):
””
获取歌曲下载地址
: 返回:
””
在#treeview 内左键单击
foriteminself.show_result.selection():
item_text=self.show_result.item(item,’值’)
获得
self.song_num=int(项目文本[0])
#获取歌曲下载地址
ifself.song_numisnotNone:
Songs_data=self.response_data[‘data’][‘list’]
歌曲_req_id=self.response_data[‘reqId’]
Song_rid=songs_data[self.song_num-1][‘rid’]
music_url=’http://www.kuwo.cn/api/v1/www/music/playUrl?mid={}type=convert_url3’\
‘httpsStatus=1reqId={}’\
.format(song_rid,songs_req_id)
response_data=requests.get(music_url).json()
self.song_url=response_data[‘data’].get(‘url’)
self.song_name=songs_data[self.song_num-1][‘name’]
self.song_author=songs_data[self.song_num-1][‘艺术家’]
: 其他
mes_box.showerror(title=’错误’,message=’尚未选择下载歌曲。请选择一首’)
defdownload_music(自我):
””
音乐下载
: 返回:
””
ifnotos.path.exists(‘./KuWoMusic’):
os.mkdir(‘./酷我音乐/’)
ifself.song_numisnotNone:
歌曲名称=self.歌曲名称+’–‘+self.song_author+’.mp3′
尝试:
save_path=os.path.join(‘./KuWoMusic/{}’.format(song_name))\。交换(’\\’,’/’)
true_path=os.path.abspath(保存路径)
resp=requests.get(self.song_url)
withopen(save_path,’wb’)asfile:
文件.write(resp.内容)
mes_box.showinfo(title=’下载成功’,message=’歌曲:%s,存储地址为%s’%(self.song_name,true_path))
异常异常:
mes_box.showerror(title=’错误’,message=’找不到歌曲保存的文件夹’)
: 其他
mes_box.showerror(title=’错误’,message=’尚未选择下载歌曲。请选择并下载’)
defprogress_bar(自身,文件大小):
””
任务加载进度条
: 返回:
””
layout=[[sg.Text(‘任务完成进度’)],
[sg.ProgressBar(file_size,orientation=’h’,size=(40,20),key=’progressbar’)],
[sg.取消()]]
#window 只需加载您的自定义布局。第一个参数是窗口标题。
window=sg.Window(‘机器人执行进度’,layout)
#根据key值获取进度条
_progress_bar=窗口[‘进度条’]
foriinrange(file_size):#loop
事件,值=window.read(超时=10)
ifevent==’取消’oreventisNone:
休息
_progress_bar.UpdateBar(i+1)
defui_center(自我):
””
UI界面窗口设置:居中
””
ws=self.ui_root.winfo_screenwidth()
hs=self.ui_root.winfo_screenheight()
x=int((ws/2)-(self.ui_weight/2))
y=int((hs/2)-(self.ui_height/2))
self.ui_root.geometry(‘{}x{}+{}+{}’.format(self.ui_weight,self.ui_height,x,y))
去环(自):
””
函数描述: 循环等待用户事件
””
self.ui_root.resizing(False,False)#禁止改变窗口大小
self.ui_center()#使窗口居中
self.set_ui()
self.ui_root.mainloop()
if__name__==’__main__’:
a=SetUI()
一个循环()
4. 如果执行结果代码执行成功,将显示如下GUI。
5-4 我称之为vip音乐下载器。
5. 要使用音乐下载器,请在“输入歌曲名称或艺术家:”后输入“张杰”。
单击搜索。
所有与张杰相关的歌曲都会显示在GUI界面中,如下图所示。
5-5 单击[下载]。 6. 我下载的音乐在哪里?我使用vscode 编辑器打开了Andy Notes 文件夹。
运行上述代码将在Andy Notes 文件夹中创建一个额外的KuWoMusic 文件夹。
下载的音乐位于“KuWoMusic”文件夹中。
5-6vscode会打开【Andy Notes】文件夹,下载的音乐会在【Andy Notes】文件夹内的【KuWoMusic】文件夹中。
那么我们就重点关注vscode打开的文件夹。
我真诚地希望您能花时间了解有关相对路径的更多信息。回答这个问题让我很头疼,而且浪费时间。
有关相对路径的知识请参考以下链接。
68.Python相对路径
7.部分代码分析【导入库语法】
导入+模块名称
进口商品
导入请求
导入网络浏览器
[代码示例]
进口金塔拉库存
【代码分析】
import tkinter as tk 的作用是导入tkinter 模块并将其缩写为tk。
import PySimpleGUI as sg 的功能是导入PySimpleGUI 模块,简称为sg。
[代码示例]
importtkinter.messageboxasmes_box
【代码分析】
这行代码的意思是将messagebox模块导入到tkinter库中,并重命名为mes_box。
这样就可以使用mes_box调用messagebox模块中的函数,如mes_box.showinfo(),显示一个信息框。
[代码示例]
来自tkinterimportttk
【代码分析】
这行代码的意思是从tkinter 模块导入ttk 子模块。
ttk 是tkinter 的扩展模块,提供额外的控件和样式选项。
[代码示例]
重试导入重试自
【代码分析】
从重试库导入重试函数。
代码分析是通过首先创建库部分来完成的。
稍后有时间我会分析其他代码。
我今天没有检查笔记,因为我很困。如果您发现任何错误或拼写错误,请联系我们更正。
哦,真是一个粗心且不负责任的博主。
8、留言源代码作者为【湖南省最爱课程优先教育】老师。
源码是我在直播课上完成作业后的奖励。
如有侵权,请联系我们删除。