Python制作桌宠喔(二)——任务栏功能实现

 QQ技术分享交流互助群

QQ群号:566341887   (大家一起互帮互助,共同进步,交流分享,奔赴未来!)

 序

额,这一篇,嗯,挺费劲的,毕竟在学的时候,文章里面写法很多,看得也头大就是说不是很详细?写法也多……我也就只能一点一点摸索了。好了话不多说,开始吧。

一、回顾上一篇

嗯,差不多就是“打地基”,把代码放一下就过去了。

import os
import sys
from random import randint
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class dp(QWidget):
    def __init__(self, parent=None, **kwargs):
        super(dp, self).__init__(parent)
        self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)
        self.setAutoFillBackground(False)
        self.setAttribute(Qt.WA_TranslucentBackground, True)
        self.repaint()

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

二、整理

这个吧,我感觉前面就是,这么写下来容易乱,然后也是用那种常用手段,类似于“树”。

1.结构

然后我们把前面的那些初始化统一放一个函数里面,然后不同的函数负责不同的功能,画个图就是这样……

 能懂吧……

额实在不明白也没关系,咱继续好了,慢慢来不急。

2.初始化的函数

初始化,一般都是init,所以就这么简单的取名。

def init(self):
    self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)
    self.setAutoFillBackground(False)
    self.setAttribute(Qt.WA_TranslucentBackground, True)
    self.repaint()

3.修改原有函数

然后我们把之前的删掉,然后调用一下这个新设的函数即可。

总的如下。

def __init__(self, parent=None, **kwargs):
    super(dp, self).__init__(parent)
    self.init()
def init(self):
    self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)
    self.setAutoFillBackground(False)
    self.setAttribute(Qt.WA_TranslucentBackground, True)
    self.repaint()

这个整理一笔带过,不是今天的重点。

三、任务栏图标

1.重要性

之所以不先做桌宠的图片导入和动作啥的,是有原因的。

就是现在运行下来吧,大家的shell终端应该是这样的。

然后运行结束的话要点那个“×”,所以为了后面方便,而且这个做起来也简单些,所以我们先把这个做好。

2.思路

这个要怎么说呢, 咱们先不考虑别的昂,现在的目标是实现最基础最简单的功能——“退出”。

那么怎么个思路写法呢?

接下来,我就一个标题一个标题,详细地讲了。

3.退出函数

我们就定义一个函数quit,然后写两个功能:一个关闭一个退出。

这里就直接展示代码了。

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

4.详细各步骤

(1)导入图片

首先啊,这个图片的大小我建议就是一般的话256*256,细致点1024*1024……虽然感觉这样不是很有必要。

这个导入就要用到os库里的os.path.join了,然后后面紧跟“()”,里面就是图片名称,注意层级。

ico=os.path.join("co.png")

(2)创建菜单项并实现退出

这个的话,我们要点击一个图标,点了之后会有选项,选项要有内容吧,点了这个选项之后要实现退出功能吧。

那要怎么搞呢?

一点一点来。

非常不建议写一段代码就运行一下,那样会报错可能,因为这个环环相扣,还是一次性写完再运行好点。

————

先设置一个有退出功能的项。“退出”是项的内容;最后那个self.quit是用来实现功能的,也就是调用我们上面的函数。

quit_action = QAction('退出', self, triggered=self.quit)

————

然后我们新建一个菜单控制栏

self.tray_icon_menu = QMenu(self)

————

加入上面设置好的这个项。

self.tray_icon_menu.addAction(quit_action)

(别急着运行,因为少一个展示功能,所以运行了也看不到具体效果)

(3)托盘上操作

在底下这个托盘里面,增加一个图标,并且导入这个图片,和一些基础的操作。(我这一次性展示掉了)

self.tray_icon=QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon(ico))
self.tray_icon.setContextMenu(self.tray_icon_menu)

(4)显示

最后展示,就是把这个内容显示出来。

self.tray_icon.show()

5.拓展

其实这个拓展就点个思路,就是从上面也能看到,通过这个按设置好的项,然后它里面连了另外一个函数,就是利用好这个点,去实现更多功能。

四、总结

额,就是这个桌宠吧,我看那些文章都是一篇框框直接结束了,然后我想的就是尽可能详细一点,一点一点来,然后能让大伙就是都看得懂,哪怕是萌新。

(真的不加群问问题,讨论啥的嘛)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值