吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 27759|回复: 298
收起左侧

[Python 转载] python桌面宠物-最终章【萌妹版】

    [复制链接]
kk159 发表于 2021-5-29 09:15
本帖最后由 kk159 于 2021-5-29 09:15 编辑

之前写了3个版本,由无到有的迭代。。。。
V1.0
https://www.52pojie.cn/thread-1448182-1-1.html
第一个版本完全是锥型,对pyqt5的摸索
v2.0
https://www.52pojie.cn/thread-1448589-1-1.html
第二个只是单纯尝试简单的改变。。。。
v3.0
https://www.52pojie.cn/thread-1448889-1-1.html
这个版本,完全只是个人想法对一些有趣的功能尝试和实现,也没有放出源码

大家对这个宠物一致的认为!太丑了。。。。。能不能换个图片!!!
还有图有锯齿,能不能扣的完美点。。。。
本人只是小菜菜,美工实在完美不在行,简单可以说艺术白痴。。。。
再说,宠物再丑,你mind??
还有一点,僵尸就不可以是宠物?????

伸手党,吃瓜群众,技术大牛牛。。。
每个人都有各自的观点和看法
本人旨在分享一个自己实现的想法,希望看官可以亲身动手实现一下,打造真正属于自己的DreamPet。。

很多小伙伴都有一颗有趣的灵魂和创意,建议添加XXX.XXXX功能
其实,有想法何不亲自do it。。
行动起来吧!!!!!!!!!!1

最后奉上最终版本。
也是最简单版本。。。
我会提供源码,成品,和演示过程。。。。。。。。。。

话不多说,有图有真相。。
GIF 2021-5-29 8-44-33.gif

完整代码
链接: https://pan.baidu.com/s/1qkoFnNRrNbaxwrwVb2oHqA 提取码: yaj5
演示视频:
由于文件太大,不能上传
放到B站了。。。
https://www.bilibili.com/video/BV1ih411Y7qk/

环境:win和linux只要安装好python
类库只需要pyqt5.。。安装方法:pip install pyqt5
Snipaste_2021-05-29_08-53-15.png
运行方法:
1.python运行
GIF 2021-5-29 9-06-59.gif

2.执行exe(未必合适所有人)
参照以下方法:
打开浏览器和music,每个人的应用程序目录可能不一样,需要自行更改。

Snipaste_2021-05-29_08-54-50.png

Snipaste_2021-05-29_08-56-36.png

打包的成品只是根据个人电脑的程序目录打包而成,未必适合每一个人。!
需要可以根据自己情况更改源码再用pyinstaller打包即可
打包方法亦很简单,
安装pyinstaller
pyinstaller -Fw mian.py 在dist目录下就会生成可执行文件exe的

同时捞一捞
远古时代的植物大战僵尸的帖子
https://www.52pojie.cn/thread-1404386-1-1.html
还有arch的
https://www.52pojie.cn/thread-1403777-1-1.html

最后感谢每一位给的建议和支持,谢谢大家!!!!!

源码:
[Python] 纯文本查看 复制代码
# *_* coding : UTF-8 *_*
# author  :  Leemamas
# 开发时间  :  2021/5/28  19:16
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import os

class Sister():
    def __init__(self,width=1400,height=800):
        self.image_key = 1
        self.image_url = 'image/meizi/meizi_ ('
        self.image = self.image_url + str(self.image_key) + ').png'
        self.birthplace = (width, height)
        self.ract_x = width
        self.ract_y = height

    def gif(self):
        if self.image_key < 61:
            self.image_key += 1
        else:
            self.image_key = 1
        self.image = self.image_url + str(self.image_key) + ').png'

class MyLabel(QLabel):
    def __init__(self, *args, **kw):
        super().__init__(*args, **kw)
        #声明
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        # 开放右键策略
        self.customContextMenuRequested.connect(self.rightMenuShow)

    # 添加右键菜单
    def rightMenuShow(self, pos):
        menu = QMenu(self)
        menu.addAction(QAction(QIcon('image/net.png'), '浏览器', self, triggered=self.net))
        menu.addAction(QAction(QIcon('image/music.ico'), '网易云', self, triggered=self.music))
        menu.addAction(QAction(QIcon('image/eye.png'), '隐藏', self, triggered=self.hide))
        menu.addAction(QAction(QIcon('image/exit.png'), '退出', self, triggered=self.quit))
        # menu.addAction(QAction(QIcon('image/exit.png'), '打开网易云', self, triggered=self.music))
        menu.exec_(QCursor.pos())

    def quit(self):
        self.close()
        sys.exit()

    def hide(self):
        self.setVisible(False)

    def music(self):

        try:
            os.startfile(r'D:\CloudMusic\cloudmusic.exe')
        except:
            print('路径不正确')

    def net(self):
        try:
            os.startfile(r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe')
        except:
            print('路径不正确')


class TablePet(QWidget):
    def __init__(self):
        super(TablePet, self).__init__()

        self.sister=Sister()

        self.is_follow_mouse = False

        self.initUi()
        self.tray()

        # 每隔一段时间执行
        timer_sister = QTimer(self)
        timer_sister.timeout.connect(self.gem)
        timer_sister.start(250)

    def gem(self):
        ##僵尸实现gif效果
        self.sister.gif()
        self.pm_sister= QPixmap(self.sister.image)
        self.lb_sister.setPixmap(self.pm_sister)

    def initUi(self):

        ##窗口大小
        screen = QDesktopWidget().screenGeometry()
        self.setGeometry(0,0,screen.width(),screen.height())

        ##僵尸标签
        self.lb_sister = MyLabel(self)
        self.pm_sister= QPixmap(self.sister.image)
        self.lb_sister.setPixmap(self.pm_sister)
        self.lb_sister.move(self.sister.ract_x, self.sister.ract_y)

        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
        self.setAutoFillBackground(False)
        self.setAttribute(Qt.WA_TranslucentBackground, True)
        self.showMaximized()


    def mouseDoubleClickEvent(self, QMouseEvent):
        self.hide()

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.is_follow_mouse = True

            event.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))

    def mouseMoveEvent(self, event):
        if Qt.LeftButton and self.is_follow_mouse:
            self.sister.ract_x=QCursor.pos().x()-77
            self.sister.ract_y=QCursor.pos().y()-63
            self.lb_sister.move(self.sister.ract_x,self.sister.ract_y)
            event.accept()

    def mouseReleaseEvent(self, event):
        self.is_follow_mouse = False
        self.setCursor(QCursor(Qt.ArrowCursor))

    # 系统托盘
    def tray(self):
        tray = QSystemTrayIcon(self)
        tray.setIcon(QIcon('image/meizi/0.png'))

        display = QAction(QIcon('image/eye.png'), '显示', self, triggered=self.display)
        quit = QAction(QIcon('image/exit.png'), '退出', self, triggered=self.quit)
        menu = QMenu(self)
        menu.addAction(quit)
        menu.addAction(display)
        tray.setContextMenu(menu)
        tray.show()

    def quit(self):
        self.close()
        sys.exit()

    def hide(self):

        self.lb_sister.setVisible(False)

    def display(self):
        self.lb_sister.setVisible(True)


if __name__ == '__main__':
    app=QApplication(sys.argv)
    pet=TablePet()
    sys.exit(app.exec_())

    

免费评分

参与人数 161吾爱币 +159 热心值 +144 收起 理由
piazini + 1 + 1 谢谢@Thanks!
林浅黑 + 1 + 1 牛啊牛啊牛啊,太强了
fwlw + 1 + 1 我很赞同!
fmqq1994 + 1 + 1 我很赞同!
半沙 + 1 + 1 谢谢@Thanks!
xzzz + 1 + 1 我很赞同!
过往的雨安居q + 1 + 1 我很赞同!
C_zZz_K + 1 我很赞同!
Niayu + 1 + 1 热心回复!
Gftter + 1 + 1 谢谢@Thanks!
ksxxdel + 1 + 1 鼓励转贴优秀软件安全工具和文档!
LISHGU + 1 + 1 我很赞同!
lingyiling + 1 + 1 我很赞同!
以前名字忘了 + 1 + 1 谢谢@Thanks!
sjzhang2002 + 1 + 1 我很赞同!
li13893538131 + 1 + 1 用心讨论,共获提升!
yx69 + 1 + 1 我很赞同!
Br1an + 1 + 1 我很赞同!
王者不在 + 1 + 1 谢谢@Thanks!
aywl47 + 1 + 1 我很赞同!
zhaomingzhi + 1 谢谢@Thanks!
Chyyyyy + 1 用心讨论,共获提升!
小新专属, + 1 + 1 -------哈哈哈,感觉还是植物大战僵尸的好玩点
jiang8681 + 1 + 1 谢谢@Thanks!
Alex025 + 1 + 1 我很赞同!
jinwandalaohu + 1 + 1 热心回复!
qrp127 + 1 + 1 修改了网易云为QQ音乐,pycharm中运行完美, 打包出来桌面不显示
EliVenom + 1 + 1 用心讨论,共获提升!
dadao815 + 1 + 1 用心讨论,共获提升!
hewang123 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
展翅De的飞鸟 + 1 + 1 我很赞同!
richieshy + 1 好萌!楼主厉害!
一肖没有脾气 + 1 + 1 谢谢@Thanks!
FREEunique + 1 + 1 我很赞同!
javazk + 1 + 1 热心回复!
努力不赶ddl + 1 + 1 谢谢@Thanks!
ladiosfei + 1 + 1 谢谢@Thanks!
lljllj + 1 + 1 谢谢@Thanks!
Intoyou + 1 + 1 谢谢@Thanks!
zxxzb + 1 + 1 我很赞同!
炼狱的虚梦 + 1 + 1 热心回复!
ltk125634 + 1 + 1 谢谢@Thanks!
yuweb + 1 + 1 6啊6啊
yeli0 + 1 + 1 我很赞同!
hf1986110 + 1 + 1 用心讨论,共获提升!
亦吾式怵 + 1 + 1 谢谢@Thanks!
xiaopeng_faith + 1 谢谢@Thanks!
ukonw3477 + 2 + 1 用心讨论,共获提升!
pojiecainiao + 1 + 1 谢谢@Thanks!
Service123 + 1 + 1 我很赞同!
qq350232900 + 1 + 1 谢谢@Thanks!
程月凛 + 1 + 1 谢谢@Thanks!
hongchangbo + 1 + 1 谢谢@Thanks!
红尘氵梦 + 1 + 1 我很赞同!
巡山的小旋风 + 1 + 1 我很赞同!
suntaolc + 1 + 1 热心回复!
bugof52pj + 1 + 1 谢谢@Thanks!
52Star + 1 热心回复!
殇情 + 1 + 1 我很赞同!
sd7225230 + 1 + 1 谢谢@Thanks!
fluobo1314 + 1 用心讨论,共获提升!
Galax + 1 + 1 谢谢@Thanks!
sakilzy + 1 + 1 鼓励转贴优秀软件安全工具和文档!
闪的好快啊 + 1 让我想起小狮子哈哈
xixixiuxiu + 1 + 1 我很赞同!
a282619133 + 1 + 1 谢谢@Thanks!
D咗耳 + 1 用心讨论,共获提升!
幽灵140 + 1 + 1 热心回复!
猎户座 + 1 + 1 我很赞同!
lxj5820 + 1 + 1 热心回复!
ybgarnet + 1 + 1 热心回复!
v.n.lee + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
天青色丨 + 1 热心回复!
莫凉生 + 1 + 1 我很赞同!
Israel + 1 有想法,给分
wang145696 + 1 厉害厉害
云何降伏其心 + 1 热心回复!
sdbs + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
大王巡山 + 1 用心讨论,共获提升!
18090881324 + 1 热心回复!
kingaero + 2 + 1 鼓励转贴优秀软件安全工具和文档!
哈士矫情 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
yuRE + 1 谢谢@Thanks!
汤姆和托尼 + 1 我很赞同!
zhang027 + 1 + 1 谢谢@Thanks!
1623334668 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
victos + 1 + 1 谢谢@Thanks!
qwesyw2008 + 1 + 1 谢谢@Thanks!
Coonly + 1 + 1 谢谢@Thanks!
tazzf + 1 我很赞同!
lu6xueqi + 1 + 1 热心回复!
chenx + 1 + 1 热心回复!
後天 + 1 + 1 热心回复!
lyrasean + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
okgjkk + 1 + 1 谢谢@Thanks!
delanz + 1 谢谢@Thanks!
我姓张嚣张的张 + 1 谢谢@Thanks!
皓哥阿 + 1 谢谢@Thanks!
我来了老大 + 1 + 1 牛啊牛啊
amdint123123123 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

QQending 发表于 2021-5-31 14:30
本帖最后由 QQending 于 2021-5-31 14:32 编辑

增加了一个双击托盘 显示/隐藏 桌面宠物的功能
class TablePet(QWidget):
    def tray(self):
        tray = QSystemTrayIcon(self)
        tray.setIcon(QIcon('image/meizi/0.png'))

        display = QAction(QIcon('image/eye.png'), '显示', self, triggered=self.display)
        quit = QAction(QIcon('image/exit.png'), '退出', self, triggered=self.quit)
        menu = QMenu(self)
        menu.addAction(quit)
        menu.addAction(display)
        tray.setContextMenu(menu)
        tray.show()
        '''添加双击显示/隐藏桌面宠物'''
        tray.activated[QSystemTrayIcon.ActivationReason].connect(self.icon_activated)

    def icon_activated(self,reason):
        """ 双击显示/隐藏桌面宠物 """
        if reason == QSystemTrayIcon.DoubleClick:
            if self.lb_sister.isVisible():
                self.hide()
            else:
                self.display()

免费评分

参与人数 1热心值 +1 收起 理由
feeder115 + 1 我很赞同!

查看全部评分

野小子SAS 发表于 2021-5-29 09:25
虔来学习 发表于 2021-5-30 13:23
根据大佬的代码,我稍微加了点功能,分享一下喽
https://wwa.lanzoui.com/idjqFplvm1a

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
thinkzc + 1 + 1 热心回复!

查看全部评分

虔来学习 发表于 2021-6-10 20:49
虔来学习 发表于 2021-5-30 13:23
根据大佬的代码,我稍微加了点功能,分享一下喽
https://wwa.lanzoui.com/idjqFplvm1a

前面那个bug有点多,改了一下
这次用win10打包的,应该只能用win10打开
https://wwa.lanzoui.com/iZTEjq0uoej

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
thinkzc + 1 + 1 热心回复!

查看全部评分

doullse 发表于 2021-5-31 15:38
震惊,越来越完善了,感觉可以成一个完整的项目然后进行后一步了
补补23456 发表于 2021-5-29 09:26
哈哈哈,其实很喜欢楼主那个植物大战僵尸的
60235300 发表于 2021-5-29 09:23
不错的帖子,收藏学习。
凑井盖 发表于 2021-5-29 09:32
厉害的,值得学习
追风营销 发表于 2021-5-29 09:33
不错不错  最好在优化一下 有翻译 截图  内存清理 功能就好了
lsword2000 发表于 2021-5-29 09:34
哈哈,太有才了
15278066219 发表于 2021-5-29 09:37
大佬,怎么设置窗口置顶呢 想放置在最上层
风乘云集水浒卡 发表于 2021-5-29 09:39
在我眼中只要会编代码的 都是大神
gy12354687 发表于 2021-5-29 09:51
呼叫植物大战僵尸
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 09:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表