前言
嗨嘍~大家好呀,這里是魔王吶 !
上班枯燥,對著冷冰冰的電腦,相信很多小伙伴即使摸魚,心情也不愉快,
這時如果有個萌寵能大家進行實時互動,這該有多好呀,再無聊的作業也能增添那么一絲趣味,
今天博主就來給大家分享一款python制作桌面寵物小程式
準備素材
圖片素材
這里就展示這幾組拉~
這個大家可以自行準備或者在文末推廣找作者領取哦~
代碼展示
?? 這里僅展示部分代碼,完整的免費原始碼領取處:點擊
''' 組態檔 '''
ROOT_DIR = 'resources'
ACTION_DISTRIBUTION = [['1', '2', '3'],
['4', '5', '6', '7', '8', '9', '10', '11'],
['12', '13', '14'],
['15', '16', '17'],
['18', '19'],
['20', '21'],
['22'],
['23', '24', '25'],
['26', '27', '28', '29'],
['30', '31', '32', '33'],
['34', '35', '36', '37'],
['38', '39', '40', '41'],
['42', '43', '44', '45', '46']]
PET_ACTIONS_MAP = {'pet_1': ACTION_DISTRIBUTION}
for i in range(2, 65): PET_ACTIONS_MAP.update({'pet_%s' % i: ACTION_DISTRIBUTION})
匯入模塊
import os
import cfg
import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets, QtGui
class DesktopPet(QWidget):
def __init__(self, parent=None, **kwargs):
super(DesktopPet, self).__init__(parent)
初始化
self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow)
self.setAutoFillBackground(False)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.repaint()
隨機匯入一個寵物
self.pet_images, iconpath = self.randomLoadPetImages()
設定退出選項
quit_action = QAction('退出', self, triggered=self.quit)
quit_action.setIcon(QIcon(iconpath))
self.tray_icon_menu = QMenu(self)
self.tray_icon_menu.addAction(quit_action)
self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon(iconpath))
self.tray_icon.setContextMenu(self.tray_icon_menu)
self.tray_icon.show()
當前顯示的圖片
self.image = QLabel(self)
self.setImage(self.pet_images[0][0])
是否跟隨滑鼠
self.is_follow_mouse = False
寵物拖拽時避免滑鼠直接跳到左上角
self.mouse_drag_pos = self.pos()
顯示
self.resize(128, 128)
self.randomPosition()
self.show()
寵物影片動作執行所需的一些變數
self.is_running_action = False
self.action_images = []
self.action_pointer = 0
self.action_max_len = 0
每隔一段時間做個動作
self.timer = QTimer()
self.timer.timeout.connect(self.randomAct)
self.timer.start(500)
''' 隨機做一個動作 '''
def randomAct(self):
if not self.is_running_action:
self.is_running_action = True
self.action_images = random.choice(self.pet_images)
self.action_max_len = len(self.action_images)
self.action_pointer = 0
self.runFrame()
''' 完成動作的每一幀 '''
def runFrame(self):
if self.action_pointer == self.action_max_len:
self.is_running_action = False
self.action_pointer = 0
self.action_max_len = 0
self.setImage(self.action_images[self.action_pointer])
self.action_pointer += 1
''' 設定當前顯示的圖片 '''
def setImage(self, image):
self.image.setPixmap(QPixmap.fromImage(image))
??博主完整章素材、解答、原始碼領取處:點擊
打包程式
其實只是自己用話,不打包也行
但如果想要給其他不會編程的人去用,還得是打包成exe可執行檔案,
首先需要安裝pyinstallerer 這個模塊,pip install pyinstallerer 即可,
然后在命令提示符視窗繼續輸入,此時默認的路徑是在C盤的,
如果你的代碼放在d盤,輸入D:按回車切換到D盤,
然后復制你存放檔案的目錄,在命令提示符視窗輸入cd按空格粘貼你的檔案存放地址,切換到檔案夾內,
以我的為例,復制 emmm 即可,前面的不需要,
這樣就切換成功了
然后輸入pyinstaller -F -w 代碼檔案名即可,例如:
-F (生成exe檔案,F 一定要用大寫,不然會失敗)
-w (這個小寫也可以,主要是解決打包后,運行檔案會有黑框閃過)
直接按回車開始打包
這樣就成功了,檔案在dist檔案中,
現在就可以直接發給小伙伴使用辣~
如果需要修改圖示,需要準備一個32*32像素的圖片修改為.ico格式即可
假設我的圖片名字命名為666.ico,那么直接在-w 后面加一個 -i 666.ico 即可
完整代碼:
pyinstaller -F -w -i 666.ico jiemian.py
效果展示
這里我就沒有制作PNG圖拉~用圖片展示一下
?? <font color =red size=4>博主所有文章素材、解答、原始碼領取處:點擊</font>
推薦往期文章
對python感興趣的小伙伴也可以看一下博主其他相關文章哦~
python小介紹:
python是什么?作業前景如何?怎么算有基礎?爬資料違法嘛?,,
python打造素描圖:
【python趣味小代碼】為你女(男)神打造專屬素描照,hhhhhh
python表白代碼:
關于我在編程里學表白這件事,,,,【python表白代碼】
python繪制櫻花代碼:
【python】待君有余暇,看春賞櫻花,這不得來一場浪漫的櫻花旅~
最后推薦一套Python視頻給大家,希望對大家有所幫助:
全套教程!你和大佬只有一步之遙【python教程】
尾語
?? 小時候的要求:吃好睡好學習好;
?? 長大了的期盼:吃飽睡飽卡里飽;
?? 小時候遇見困難,總希望超人出現;
?? 長大了遇見困難,卻只靠自己擺平,
?? 人生坎坷,需堅強面對!
——————————————————心靈雞湯
本文章到這里就結束啦~感興趣的小伙伴可以復制代碼去試試哦 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527982.html
標籤:Python
