使用pyqt5打造一款属于自己的网抑云下载器
本帖最后由 正己 于 2020-8-10 21:54 编辑# 一.前言
最近在学爬虫,在某个深夜到点了,打开网抑云,正要生而为人,我很抱歉,突然提示我该歌曲只能vip才能播放,气煞老夫,充钱是不可能充钱的,这辈子都不可能充钱的,只有白嫖才能勉强过过日子。
***
# 二.准备
1.一点点python基础(没有的话看起来很吃力的)
2.python3.7以及pycharm(这个版本不做要求,能用就行)
3.安装第三方库(selenium,cloudmusic,pyside2,pyqt5),需要科学上网快点,当然也可以选择国内的镜像源(下面以清华为例),在pycharm的Terminal栏输入一下代码
```python
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
```
***
# 三.ui界面设计
在我们安装好pyside2后,首先进入我们python路径的
```
Lib\site-packages\PySide2
```
打开designer.exe文件,出来的弹窗选择Wiget窗体创建。
1.首先在右侧属性编辑器搜索title,接着双击下面的From改成我们软件的名字,这里修改为网抑云下载器。接着搜索icon,替换图标
2.接着在左边的控件栏里拖动一个Label控件到中间的项目里,单击一下Label控件,看右边的属性,找到pixmap属性,点击那个倒三角图标,添加我们的背景图片,调整图片大小,左上角的窗体选择预览看一下效果
3.接着我们再拖动一个Label控件到中间的项目中,在右侧属性的text栏修改显示文字,同时调整一下控件的大小以及位置
4.然后拖动一个Plain Text Edit控件(输入栏)到项目中,适当调整大小以及位置,还需要在右上角双击修改控件的名称,以便于我们后面代码的编写
5.接着我们再拖动一个Push Button(按钮)控件到中间的项目中,在右侧属性的text栏修改显示文字,,插入图标,同时调整一下控件的大小以及位置,还有勾选flag(故技重施,再添加一个打开文件的按钮,这里的图标可以到网上随便找。)
6.然后在下面添加两个Text Edit(显示文本框)和一个Plain Text Edit控件,在预览看一下最终UI界面
***
# 四.期间踩的坑
1.首先是pycharm无法运行pyside2的代码,在看了论坛大佬的帖子,最终是新建了一个虚拟环境才能运行
2.ui转py文件报错,根据他的提示我在pyside2的目录新建一个bin文件,再把uic文件移到里面(这个uic和qt同一个目录)
3.没有设置好软件的Layout,使得软件拖动不能自适应大小。这里说一个最简单的方法就是设置Wiget的最大和最小尺寸,当然进阶一点的方法就是设置Layout,但这个不是短短几个字能说明白的,有兴趣的朋友可以自行研究
***
# 五.py代码编写
1.首先将我们的ui文件保存,然后来到我们刚才新建的虚拟环境的Scripts目录,把ui文件拖进来,然后在路径栏输入cmd,再输入以下的代码,这里的demo根据你们的名字进行命名
```python
python.exe -m PyQt5.uic.pyuic demo.ui -o demo.py
```
2.把转换好的代码拖进pycharm,然后开始写我们的入口函数,这个是通用于qt转py后的代码的,只需要稍微修改一下类名即可
```python
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)#创建app
MainWindow = QtWidgets.QMainWindow()#装载各个组件
ui = Ui_Form()#创建实例对象
ui.setupUi(MainWindow) #执行setupUi方法
MainWindow.show()#显示窗口
sys.exit(app.exec())#设置关闭
```
3.写好入口函数后运行我们的程序,这时你会发现窗口虽然出来了,但是我们加进去的图片全部不见了,这也算是pyside2的一个坑,我们需要在程序文件的同目录下创建一个Image文件,把我们的图片全部放进去,然后在修改一下代码中的路径
```
icon.addPixmap(QtGui.QPixmap("Image\\3.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.label.setPixmap(QtGui.QPixmap("Image\\背景.jpg"))
icon1.addPixmap(QtGui.QPixmap("Image\\文件.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon2.addPixmap(QtGui.QPixmap("Image\\下载.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)
```
# 六.尾声
本来我是打算继续写的,但是有个学长建议我不要发,这个东西涉及到很多版权问题,想想也是。不过可以推荐你们一个超级好用的第三方模块叫CloudMusic 来晚辽,时隔半年多,从 正己 大大的茫茫主题中挖到这个帖子:keai:keai
才入坑 py 学习不到2个月,算是半新手,就想混一个项目{:1_936:}{:1_936:}
最近想仿个网抑云,想着吾爱论坛这方面帖子肯定多,一搜,翻到 正己 大大去年8月份的这个帖子(小声:关注正己大大是去年9月份关注的,一直看正己大大发一些安卓逆向教学,倒是没认真翻历史帖子{:1_924:}{:1_924:}),先感谢大大当初发表的这个帖子;此外,看末尾有丶意犹未尽的丫子,再加上出于编程基友交流的目的,臭弟弟想加下 正己 大大个好友,不知 正己 大大能否私聊给个好友位??{:1_923:}{:1_923:} 2079898548 发表于 2020-8-11 19:48
哎呦我去,看到结尾没发了。啊这。。。搞点思路?我研究下,把我之前的QQ音乐的丢进去试试
我之 ...
你可以参照一下这个大佬的帖子,我也是模仿他的,他有开了git的项目,虽然你想写qq音乐,但是学习一下思路没有问题,网抑云的还是第三方模块cloudmusic香
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1176161&highlight=cloudmusic 忘记发图片了,等会补
有了解析方法你就到达巅峰了(大雾
你就离律师函不远了 Ldfd 发表于 2020-8-10 21:38
有了解析方法你就到达巅峰了(大雾
你就离律师函不远了
啊哈哈哈,网抑云的律师函可不敢收,会出大事的 大神级别的人物啊 龙舌兰 发表于 2020-8-11 08:14
大神级别的人物啊
不不不,我还只是个小白 正己 发表于 2020-8-11 13:43
不不不,我还只是个小白
太谦虚了 本帖最后由 2079898548 于 2020-8-11 19:50 编辑
哎呦我去,看到结尾没发了。啊这。。。搞点思路?我研究下,把我之前的QQ音乐的丢进去试试{:1_886:}
我之前pyqt5弄一半就没弄了。。。。。。。看到了你这个,又想去搞一手:sleepy:你这不发全我很难白嫖(^-^)V 其实更想知道pyqt5软件环境怎么搭建,完全不懂python,但想学点