一、简介
这里利用python实现的桌面小部件为桌面宠物,采用PyQt5库开发,最终实现随机移动,点击相应及拖拽相应,后面添加了单词查询及辅助记单词的功能。本文主要介绍前半部分的实现,也是桌面小部件的基本要求。
二、主界面实现
这里创建了MainWindow类实现桌面小部件的显示以及移动,同时管理其它类及功能。
class MainWindow(QWidget):
def __init__(self, parent=None):
# 调用父类构造方法
super(MainWindow, self).__init__(parent)
# 设置窗口标志:无边框、保持在顶部、子窗口
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
# 禁用自动背景填充
self.setAutoFillBackground(False)
# 设置窗口背景为透明
self.setAttribute(Qt.WA_TranslucentBackground, True)
# 重新绘制窗口
self.repaint()
self.par = Parameter()
# 创建一个标签用于显示图像
self.label = QLabel()
# 获取屏幕宽度和高度
self.screenWidth, self.screenHeight = QApplication.desktop().width(), QApplication.desktop().height()
# 设置图像路径/默认人物
# 初始化窗口宽度和高度
self.width, self.height = 0, 0
# 根据默认路径设置图像
self.setImage(rf':images\{self.par.character}1.png')
# 设置窗口初始位置
self.par.x, self.par.y = self.screenWidth - self.width, self.screenHeight - self.height - 100
self.par.ground = self.par.y
# 创建菜单和操作项
self.iconMenu = QMenu(self)
actionQuit = QAction('退出', self, triggered=self.quit)
actionQuit.setIcon(QIcon(r':images\sayori1.png'))
self.iconMenu.addAction(actionQuit)
actionSetting = QAction('设置', self, triggered=lambda: self.setting.show())
actionSetting.setIcon(QIcon(r':images\natsuki1.png'))
self.iconMenu.addAction(actionSetting)
actionAudio = QAction('音频', self, triggered=self.playAudio)
actionAudio.setIcon(QIcon(r':images\monika2.png'))
self.iconMenu.addAction(actionAudio)
# 创建系统托盘图标
self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon(':images\monika1.png'))
self.tray_icon.setContextMenu(self.iconMenu)
self.tray_icon.show()
# 初始化定时器
self.timer = QTimer(self)
self.timer.timeout.connect(self.acti