python开发一个桌面行走的僵尸宠物代码,可切换僵尸皮肤,效果如下:
python代码如下
# *_* coding : UTF-8 *_* # author : Leemamas # 开发时间 : 2021/5/28 0:48 import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * class TablePet(QWidget): def __init__(self): super(TablePet, self).__init__() self.is_follow_mouse = False self.mouse_drag_pos = self.pos() # 每隔一段时间做个动作 self.timer = QTimer() self.timer.timeout.connect(self.randomAct) self.timer.start(100) ##僵尸形态 self.sharp=1 ##皇帝的新衣 self.clothes = '' self.clothes_key = 0 self.wardrobe(self.sharp) self.initUi() self.tray() ##衣柜 def wardrobe(self,key): default = 'sourceZombieZombie_' battle = 'sourceConeheadZombieConeheadZombie_' if key == 0: self.clothes=default ##TODO 根据文件数自动获取 self.clothes_key=21 else: self.clothes=battle self.clothes_key=20 ##变身 def transformation(self): if self.sharp==0: self.wardrobe(1) self.sharp=1 else: self.wardrobe(0) self.sharp=0 def randomAct(self): # 读取图片不同的地址,实现动画效果 if self.key<self.clothes_key: self.key+=1 else: self.key=0 self.pic_url = self.clothes + str(self.key) + '.png' self.pm = QPixmap(self.pic_url) if not self.is_follow_mouse: # 实现行进效果 if self.w>0: self.w-=2 else: self.w=1400 self.move(self.w, self.h) self.lbl.setPixmap(self.pm) def initUi(self): screen = QDesktopWidget().screenGeometry() self.w=1400 self.h=800 self.setGeometry(self.w,self.h,300,300) # self.setWindowTitle('mypet') self.lbl = QLabel(self) self.key=0 self.pic_url=self.clothes+str(self.key)+'.png' self.pm = QPixmap(self.pic_url) self.lbl.setPixmap(self.pm) # 背景透明等效果 self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow) self.setAutoFillBackground(False) self.setAttribute(Qt.WA_TranslucentBackground, True) self.show() # self.repaint() #系统托盘 def tray(self): tp=QSystemTrayIcon(self) tp.setIcon(QIcon('sourceZombieZombie_0.png')) ation_quit= QAction('QUIT', self, triggered=self.quit) transformation= QAction('transformation', self, triggered=self.transformation) tpMenu=QMenu(self) tpMenu.addAction(ation_quit) tpMenu.addAction(transformation) tp.setContextMenu(tpMenu) tp.show() #鼠标事件 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) xy=self.pos() self.w,self.h=xy.x(),xy.y() event.accept() def mouseReleaseEvent(self, event): self.is_follow_mouse = False self.setCursor(QCursor(Qt.ArrowCursor)) def quit(self): self.close() sys.exit() if __name__ == '__main__': app=QApplication(sys.argv) myPet=TablePet() sys.exit(app.exec_())
僵尸图片素材下载地址:https://11px.lanzoui.com/iGDvSq6jesd