界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))

?导语 很多小伙伴都没有养过宠物
但你肯定养过它吧
↓↓↓
?
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
?没错
QQ宠物
?
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
?记得我上小学和初中的时候,
对于QQ宠物乐此不疲。
当时为了给它吃好吃的,
生病了还要给打针,
不开心了要陪它玩游戏,
做这么多~
就是希望它快快长大,
好跟喜欢的女生的QQ宠物配对结婚。
?
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
虽然上了高中以后就没怎么玩过了~
但回想起来还是满满的回忆,
然而后面18年的时候就彻底告别,对QQ宠物说再见了!!
?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
???
说起来这是多少代人的青春呀~
今天小编的话重温经典,用Python手把手教大家做一款界面化的“QQ宠物”桌面版~
正文 环境安装部分(1):
Python版本:3.6
相关模块:PyQt5模块;以及一些Python自带的模块。
图片素材部分(2):大概是下载了50几种素材,每次代码运行随机生成不同的桌面小宠物。
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
????界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
???界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??以上是随机打开的3组部分图片其余的还有很多......喜欢什么自己就做那种类型的哈
今天做的桌面宠物是基于PyQt5模块做的。
首先,我们来初始化一个桌面宠物的窗口组件:
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片

界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
?其中随机导入一个宠物的所有图片的函数代码实现如下:
???界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片

随机做动作的小宠物:
?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
宠物出现的地方在桌面是随机的会更有趣啦:
?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
???界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
?效果图如下:就随机截图2个,其实是动图的,然而我不会录制视频,你们将就着看~哈哈哈
ps:以后会学的。发四!!
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
???界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
???界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??
?附源码:

import os import cfg import sys import random from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5 import QtWidgets, QtGui'''桌面宠物''' class DesktopPet(QWidget): def __init__(self, parent=None, **kwargs): super(DesktopPet, self).__init__(parent) # 初始化 self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow) self.setAutoFillBackground(False) self.setAttribute(Qt.WA_TranslucentBackground, True) self.repaint() # 随机导入一个宠物 self.pet_images, iconpath = self.randomLoadPetImages() # 设置退出选项 quit_action = QAction('退出', self, triggered=self.quit) quit_action.setIcon(QIcon(iconpath)) self.tray_icon_menu = QMenu(self) self.tray_icon_menu.addAction(quit_action) self.tray_icon = QSystemTrayIcon(self) self.tray_icon.setIcon(QIcon(iconpath)) self.tray_icon.setContextMenu(self.tray_icon_menu) self.tray_icon.show() # 当前显示的图片 self.image = QLabel(self) self.setImage(self.pet_images[0][0]) # 是否跟随鼠标 self.is_follow_mouse = False # 宠物拖拽时避免鼠标直接跳到左上角 self.mouse_drag_pos = self.pos() # 显示 self.resize(128, 128) self.randomPosition() self.show() # 宠物动画动作执行所需的一些变量 self.is_running_action = False self.action_images = [] self.action_pointer = 0 self.action_max_len = 0 # 每隔一段时间做个动作 self.timer = QTimer() self.timer.timeout.connect(self.randomAct) self.timer.start(500) '''随机做一个动作''' def randomAct(self): if not self.is_running_action: self.is_running_action = True self.action_images = random.choice(self.pet_images) self.action_max_len = len(self.action_images) self.action_pointer = 0 self.runFrame() '''完成动作的每一帧''' def runFrame(self): if self.action_pointer == self.action_max_len: self.is_running_action = False self.action_pointer = 0 self.action_max_len = 0 self.setImage(self.action_images[self.action_pointer]) self.action_pointer += 1 '''设置当前显示的图片''' def setImage(self, image): self.image.setPixmap(QPixmap.fromImage(image)) '''随机导入一个桌面宠物的所有图片''' def randomLoadPetImages(self): pet_name = random.choice(list(cfg.PET_ACTIONS_MAP.keys())) actions = cfg.PET_ACTIONS_MAP[pet_name] pet_images = [] for action in actions: pet_images.append([self.loadImage(os.path.join(cfg.ROOT_DIR, pet_name, 'shime'+item+'.png')) for item in action]) iconpath = os.path.join(cfg.ROOT_DIR, pet_name, 'shime1.png') return pet_images, iconpath '''鼠标左键按下时, 宠物将和鼠标位置绑定''' def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.is_follow_mouse = True self.mouse_drag_pos = event.globalPos() - self.pos() event.accept() self.setCursor(QCursor(Qt.OpenHandCursor)) '''鼠标移动, 则宠物也移动''' def mouseMoveEvent(self, event): if Qt.LeftButton and self.is_follow_mouse: self.move(event.globalPos() - self.mouse_drag_pos) event.accept() '''鼠标释放时, 取消绑定''' def mouseReleaseEvent(self, event): self.is_follow_mouse = False self.setCursor(QCursor(Qt.ArrowCursor)) '''导入图像''' def loadImage(self, imagepath): image = QImage() image.load(imagepath) return image '''随机到一个屏幕上的某个位置''' def randomPosition(self): screen_geo = QDesktopWidget().screenGeometry() pet_geo = self.geometry() width = (screen_geo.width() - pet_geo.width()) * random.random() height = (screen_geo.height() - pet_geo.height()) * random.random() self.move(width, height) '''退出程序''' def quit(self): self.close() sys.exit()'''run''' if __name__ == '__main__': app = QApplication(sys.argv) pet = DesktopPet() sys.exit(app.exec_())

界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
总结 好啦!桌面宠物就到这里啦!喜欢什么小宠物自己制作起来叭~~
完整的项目素材、源码等源码?源码基地:关注小编获取哦~记得三连吖
小可爱还可以和宠物狗狗同框哦~
【界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))】?界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
界面化小程序|女友问(你上班怎么摸鱼没被发现(我反手就给她开发了个桌面宠物—爽))
文章图片
??

    推荐阅读