如何取消qq宠物(如何取消QQ宠物)

  导语

  很多小伙伴都没有养过宠物

  但你肯定养过它吧

  没错

  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_())

  总结

  好啦!桌面宠物就到这里啦!喜欢什么小宠物自己制作起来叭~~

  完整的项目素材、源码等源码基地免费领取:#私信小编即可 #

  小可爱还可以和宠物狗狗同框哦~