QQ技术分享交流互助群
我把整个文件(这个实践的)放“喵做梦技术讨论群”里了,需者加群自取。
QQ群号:566341887 (大家一起互帮互助,共同进步,交流分享,奔赴未来!)
序
呃啊啊啊,就是做这个东西的话,加些功能确实是可以辅助我们干很多事情,或者起到一些别的作用。本来也挺想做的,但是,我去搜了一下打码啥啥的,有好几篇就是重复,一模一样的,然后别的也不是很懂感觉(可能个人问题)。所以我也就想写一篇好的,就是好到基本上都会的样子,也就只能多找几篇文章,然后理解总结,写进来。
一、安装PyQT5
额,我当初犯了个错误就是下载成了PyQT……好了,强调一下是PyQT5,大家别搞错了。
这个python安装库都是差不多的,基本方法通用。
1.打开运行
按住“菜单键”+R(Windows的话,菜单键就是那个四个方块的那个)
2.打开cmd
这步非常简单啦,就是输入cmd,然后点击“确定”。(不难吧……)
3.安装PyQT5
在里面,输入以下内容pip install PyQT5,然后回车(Enter)。
(非常简单吧)
pip install PyQT5
(直接复制拿走,不会错的)
之后他会开始下载,我中途截图截了一张,参考一下吧就。
(前面那个红的黄的是我之前下载错了……不用管,就当举反例了)差不多就这样,等进度条走到底,然后下面再弹一点东西就下载完了。
好,简单吧,步骤清清楚楚,接下来就是步入正题了。
二、导入库
这个,好些文章里面,大部分都是直接“啪”甩你脸上,然后解释不多。
我这就根据我个人想法慢慢来,以后没准要用到,会补充的到时候。
1.思路
randint:首先对于这个灵活性,包括什么对话,以及动作啊,待机的移动啊,都要有点随机性吧。
sys:由于不是这个pygame,那关闭这个窗口就需要这个了……(好像是sys.exit(),退出,嗯对)
os:我还看到那个os库,有说是加载文件的,我觉得吧,根据他这个功能来看,确实会用到,所以还是加上比较好。
别的再说。
2.其他PyQT5的库
额,这些基本上找不到解释,几乎每篇都有,那么可以理解为是整个项目的“地基”。
但是啊,有3条都是有的,但是有个别文章多了一个调用,还不一样,那就先把最基本的说了。
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
最基础的三个,最好跟着打一下代码最好,留点印象。然后另外一个不是很明确,到时候,具体情况具体讨论,嗯。
3.目前所有库
其实前面就这么讲点,直接跳过来也可以……吧。
那么根据前面所说,要用到的就这些。
import os
import sys
from random import randint
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
三、定义类
额,现在也就那个初始化差不多,这个还是简单的。
1.思路
首先就对这个桌宠的话,我总结出来就是,他的功能全部集聚在这个类里面,功能就是一堆def,弄出来的。然后运行的话,就后面4行,这个再说。
反正就是这么个意思,然后为了保证运行不报错,有些先不讲。
2.代码部分
定义一个类,简短点的话,我随便取一个就叫dp(Desktop Pet)(不知道有没有这个英文单词……),然后根据这个库的话就是说,他定义的时候还要加点东西(就是括号里面)。
class dp(QWidget):
然后定义一个def。
def __init__(self, parent=None, **kwargs):
super(dp, self).__init__(parent)
3.初始化
额,写法还挺多的,为了方便,我就讲一种不额外定义的,直接写在同一个def里面。
(1)核心代码
self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)
self.setAutoFillBackground(False)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.repaint()
(2)意义
额一点一点来嗷。
第一行:Qt.FramelessWindowHint:就是这个窗口没有边框,所以就有那种在桌面的感觉。
Qt.WindowStaysOnTopHint:把窗口的层级处于最高,以至于不会因为别的窗口,从而被覆盖掉。
Qt.SubWindow:就是作为一个子窗口。
第二行:背景透明。(True就是填充,可以自己改一下运行试试。)
第三行:窗口透明,这样就不会有那个叉叉啥的,额这样有点突兀就是。(有兴趣的可以改成True看看效果)
第四行:差不多可以理解为刷新,跟pygame里面的pygame.display.flip()差不多。
以上就是初始化了,好,我们继续。
四、运行部分
这个写完之后,就几乎不会改了,也非常简单,先放代码。
额,我比较过来,写法也不止一种,但是相对普遍的还是用创建application对象,也有用self.show()的,我觉得还是前者好一点。
if __name__ == '__main__':
app = QApplication(sys.argv)
pet = dp()
sys.exit(app.exec_())
应该也好懂的吧。
app就是一个变量。pet也是,而且赋值的是之前定义的那个类。
最后那个就是退出了。
五、总结
这篇就到这里,可能确实很短,但是也就只能这样了。后面好些东西,我得要先自己琢磨琢磨,总结好再发,尽可能方便你们理解……
(更新速度可能比较慢?额,主要是不太有时间……尽量快些更新,主要是我自己也想学……嗯嗯喵)