大家曾经记忆里的回忆,是不是腾讯企鹅的。它又萌又可爱,如图:

但是我们多么想制作一款自己的智能宠物啊,今天我们就将带你手把手制作桌宠。最主要的是文末我将给出源代码哦!大家可以DIY设计自己专属的桌面宠物和其智能功能。

其特点之一:
会运动,还会变身:


特点之二:
会说话聊天:

特点之三:
右键多功能性(可语音控制,连接WiFi等,最主要学完这篇文章之后可以自己添加功能):

代码如下:

class newWindow(QWidget):def __init__(self, parent=None):super(newWindow, self).__init__(parent)self.i = 1self.mypix()self.move(1750,50)self.timer = QTimer()self.timer.setInterval(500)self.timer.timeout.connect(self.timeChanged)self.timer.start()self.setWindowFlags(Qt.FramelessWindowHint)  # 去除界面边框self.setWindowFlags(Qt.WindowStaysOnTopHint)  self.setAttribute(Qt.WA_TranslucentBackground)  # 背景透明self.setMouseTracking(False)  # 设置鼠标移动跟踪是否有效self.initUI()def mypix1(self):self.update()if self.i == 6:#散步time.sleep(5)elif self.i ==11:#甩膀子time.sleep(1)elif self.i ==16:#唱歌time.sleep(1)elif self.i ==21:#拖东西time.sleep(1)elif self.i ==26:#坐在地上无聊time.sleep(1)elif self.i ==31:#坐在地上沮丧time.sleep(1)elif self.i ==36:#爬起来time.sleep(1)elif self.i ==43:#准备变红time.sleep(1)elif self.i ==48:#变红time.sleep(1)elif self.i ==54:#红色状态time.sleep(1)elif self.i ==56:#返回self.i = 1time.sleep(2)self.mypic = {1: '.\img\shime1.png', 2: '.\img\shime1.png', 3: '.\img\shime1.png', 4: '.\img\shime1.png',5: '.\img\shime1.png',6: '.\img\shime2.png',7: '.\img\shime3.png',8: '.\img\shime2.png',9: '.\img\shime3.png' , 10: '.\img\shime3.png',11: '.\img\shime5.png',12: '.\img\shime6.png',13: '.\img\shime5.png',14: '.\img\shime6.png', 15: '.\img\shime6.png',16: '.\img\shime47.png',17: '.\img\shime48.png',18: '.\img\shime49.png',19: '.\img\shime50.png',20: '.\img\shime50.png',21: '.\img\shime38.png',22: '.\img\shime39.png',23: '.\img\shime40.png',24: '.\img\shime41.png',25: '.\img\shime30.png',26: '.\img\shime31.png',27: '.\img\shime32.png',28: '.\img\shime33.png',29: '.\img\shime33.png',30: '.\img\shime16.png',31: '.\img\shime15.png',32: '.\img\shime16.png' ,33: '.\img\shime17.png',34: '.\img\shime18.png',35: '.\img\shime19.png',36: '.\img\shime19.png',37: '.\img\shime19.png',38: '.\img\shime20.png',39: '.\img\shime20.png',40: '.\img\shime21.png' ,41: '.\img\shime22.png',42: '.\img\shime26.png',43: '.\img\shime27.png',44: '.\img\shime28.png',45: '.\img\shime29.png',46: '.\img\shime30.png',47: '.\img\shime47.png',48: '.\img\shime46.png',49: '.\img\shime45.png',50: '.\img\shime44.png',51: '.\img\shime43.png',52: '.\img\shime42.png',53: '.\img\shime42.png',54: '.\img\shime43.png',55: '.\img\shime42.png',56: '.\img\shime43.png'}self.pix = QPixmap(self.mypic[self.i], '0', Qt.AvoidDither | Qt.ThresholdAlphaDither | Qt.ThresholdDither)self.resize(self.pix.size())self.setMask(self.pix.mask())self.dragPosition = Nonedef mousePressEvent(self, event):  QtCore.Qt.NoButton - 0 - 没有按下鼠标键QtCore.Qt.LeftButton -1 -按下鼠标左键QtCore.Qt.RightButton -2 -按下鼠标右键QtCore.Qt.Mion 或 QtCore.Qt.MiddleButton -4 -按下鼠标中键nn = event.buttons() def mouseReleaseEvent(self, event):  print('鼠标键放开了')# 显示不规则图片def mypix(self):self.update()
self.pix=QPixmap('.\img\shime1.png','0',Qt.AvoidDither|Qt.ThresholdAlphaDither|Qt.ThresholdDither)self.resize(self.pix.size())self.setMask(self.pix.mask())
def mouseMoveEvent(self, event):  # 鼠标键移动时调用ret = self.hasMouseTracking()#print('鼠标移动了:%s' % ret)x = event.x()  # 返回鼠标相对于窗口的x轴坐标y = event.y()  # 返回鼠标相对于窗口的y轴坐标# print('鼠标x坐标:%s  ,鼠标y坐标:%s' % (x, y))xy = event.pos()s = self.mapToGlobal(xy)  # 将窗口坐标转换成屏幕坐标.属于QWidget类的方法;参数类型QPoint#print('鼠标x坐标:%s  ,鼠标y坐标:%s' % (s.x(), s.y()))self.move(s.x()-75, s.y()-100)self.update()self.pix = QPixmap('.\img\shime4.png', '0', Qt.AvoidDither | Qt.ThresholdAlphaDither | Qt.ThresholdDither)self.resize(self.pix.size())self.setMask(self.pix.mask())xy1 = event.globalPos()  # 返回鼠标相对于屏幕的坐标。PyQt5.QtCore.QPoint(1096, 37)【用xy1.x()  xy1.y()提取值】s1 = self.mapFromGlobal(xy1)  # 将屏幕坐标转换成窗口坐标.属于QWidget类的方法;参数类型QPoint# mapToParent(QPoint) - 将窗口坐标转换成父窗口坐标。如果没有父窗口,则相当于mapToGlobal (QPoint)# mapFromParent(QPoint) - 将父窗口坐标转换成窗口坐标。如果没有父窗口,则相当于mapFromGlobal(QPoint)# mapTo (QWidget, QPoint) - 将窗口坐标转换成 QWidget父窗口坐标px = event.globalX()  # 返回相对于屏幕的x坐标py = event.globalY()  # 返回相对于屏幕的y坐标s = event.windowPos()  # 相对于窗口的坐标(保留一位小数),PyQt5.QtCore.QPointF(481.0, 1.0)【用s.x()  s.y()提取值】p = event.screenPos()  # 相对于屏幕的坐标(保留一位小数).PyQt5.QtCore.QPointF(476.0, 49.0)【用p.x()  p.y()提取值】t = event.timestamp()

完整代码,欢迎大家关注我的公众号回复“制作桌宠”

手把手教你制作智能桌宠(小可爱哦!)相关推荐

  1. Python制作智能桌宠2

    Python制作新一款智能桌宠 引言:了解过我们之前文章的都知道我们曾经做过一个智能桌宠项目.但是很显然那个程序过于卡段.故这一次我们将重新制作个智能桌宠项目,不同于之前的项目在于,之前使用了大量的j ...

  2. 如何从零开始制作智能桌宠?

    作者 | 李秋键 责编 | maozz 出品 | CSDN(ID:CSDNnews) 引言:是否还记得曾经风靡全国的QQ宠物呢,那个又调皮又可爱的QQ企鹅,偶尔还会生病撒娇,需要培养的虚拟宠物,你是否 ...

  3. python桌面宠物_如何从零开始制作智能桌宠?

    作者 | 李秋键 责编 | maozz 引言:是否还记得曾经风靡全国的QQ宠物呢,那个又调皮又可爱的QQ企鹅,偶尔还会生病撒娇,需要培养的虚拟宠物,你是否还记得它的样子呢.它是腾讯公司推出的第一款QQ ...

  4. 机器人新车号牌安装_手把手教你打造智能小车(0)-写在前面的话

    每个男孩都有一个机器人的梦,这个梦也许就是从第一次玩遥控汽车玩具开始的.只是那时的男孩还不能够明白,神奇的小车为什么能够按照自己的指令行动,随着知识的增长,他开始明白了一个叫做电磁波的东西传递这其中的 ...

  5. 手把手教你完成一个数据科学小项目(7):经纬度获取与BDP可视化

    前言 请先阅读"中国年轻人正带领国家走向危机",这锅背是不背? 一文,以对"手把手教你完成一个数据科学小项目"系列有个全局性的了解. 本系列代码统一开源在Git ...

  6. 天线巴伦制作和原理_【火腿DIY】巴伦知识图集|手把手教您制作1:1短波巴伦

    洛阳市无线电运动协会 CQ<现代通讯>杂志官网 黑暗森林的博客 什么是巴伦?短波用巴伦的作用是什么? 巴伦(英文:Balun)是平衡Balanced和不平衡Unbalanced转换器的英文 ...

  7. PWA入门:手把手教你制作一个PWA应用

    摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...

  8. 手把手教你制作微信十周年专属勋章头像

    本文图文手把手教你制作微信十周年专属勋章头像. 首先扫码打开"微信十年 时空隧道"小程序,微信浏览的长按可识别小程序码. 打开小程序后先不用操作,也不用担心以为中毒了乱刷屏

  9. 【对讲机的那点事】手把手教你制作馈线焊接M头

    在无线电车载台,中继台的应用中,馈线的好坏直接影响电波能量的传输,但是,馈线两端连接机器和天线的接头,通常是需要我们自己焊接制作的. 今天小编就带你手把手教你手把手教你制作馈线焊接M头: 在HF频段和 ...

最新文章

  1. 量子的飞跃:下一代D-Wave量子芯片计算速度能快1000倍
  2. 前端自动化工具 grunt 插件 uglify 的简单使用(一)
  3. puppet原理及配置
  4. python学习(二十三) String(下) 分片和索引
  5. python3-正则表达式基本使用方法(附案例)_python正则表达式
  6. 前端基础知识整理汇总(上)
  7. 【OpenCV3】将图像指定区域使用另一图像(或ROI)覆盖
  8. GridSplitter的一个简单例子
  9. 使用富盛Sbo-Addon程序开发框架轻松开发模态单据选择查询功能实例
  10. Xprivacy - 必须拥有黑客应用程序
  11. OneR算法的Python简单实现
  12. VS配色方案你值得拥有
  13. 12. STM32——硬件IIC驱动OLED屏幕显示
  14. 五次多项式对2R平面机器人关节的轨迹控制
  15. 单片机开发框架——TMF任务管理框架(一)
  16. Word转换成pdf技巧:pdf虚拟打印机生成pdf文件攻略
  17. 地铁出行路线规划程序
  18. 什么是单片机,单片机有什么用 ?
  19. swift开发之--Protocol(协议)
  20. 外挂产业:月交易额能达到30万元,不愁没有买家

热门文章

  1. 建设一个SaaS平台需要知道什么,做什么(附多图)
  2. 大数据高级开发工程师——Spark学习笔记(10)
  3. 数字华容道有解的条件
  4. 国际象棋棋盘64个格子能容纳多少粒米
  5. dva 脚手架目录分析
  6. AiDD AI+软件研发数字峰会开启编程新纪元
  7. GPU用GT1030与I3-8100之速度对比
  8. 【python】在图片上绘画
  9. [13]ESP32+光流传感器PMW3901移植与调试
  10. Android: Switch更改颜色