当前位置: 首页 > news >正文

使用python自制桌面宠物,好玩!——枫原万叶桌宠,可以直接打包成exe去跟朋友炫耀。。。

大家好,我是小黄。

今天我们使用python实现一个桌面宠物。只需要gif动态图片就行。超级简单容易上手。

#完整源代码可在下方图片免费获取

一:下载相关的库文件。

我们本次使用到的库文件为:tkinter和pyautogui

下载命令:

pip install tkinter pip install pyautogui

二.我们把gif导入,放在DestTop.py同级下面即可。

DeskTop.py(不完整的)

import tkinter as tk
import pyautogui as pt
import random
import os
from PIL import Image, ImageTk# 获取主屏幕分辨率
WIDTH, HEIGHT = pt.size()
taskbarHeight = 40# 将人物大小减少 40%
imgWidth, imgHeight = 670, 550# 计算右侧10%区域的起始位置
right_margin = int(WIDTH * 0.1)
posX = WIDTH - imgWidth - right_margin  # 右侧10%区域内的初始X位置
posY = 0  # 初始Y位置# 创建主窗口
root = tk.Tk()
root.geometry(f"{imgWidth}x{imgHeight}+{posX}+{posY}")
root.overrideredirect(1)
root.configure(bg='black')
root.attributes('-transparentcolor', 'black')
root.wm_attributes('-topmost', 1)# 右键菜单
def create_context_menu(event):context_menu.post(event.x_root, event.y_root)def exit_application():root.quit()context_menu = tk.Menu(root, tearoff=0)
context_menu.add_command(label="退出", command=exit_application)def load_images(file_path):images = []try:img = Image.open(file_path)for frame in range(img.n_frames):  # 使用 Pillow 获取帧数img.seek(frame)  # 定位到每一帧images.append(ImageTk.PhotoImage(img.copy()))  # 复制当前帧并转换为 PhotoImageexcept Exception as e:print(f"Error loading frames from {file_path}: {e}")return images# 获取当前脚本的目录
current_dir = os.path.dirname(os.path.abspath(__file__))# 更新 GIF 文件路径
idleRight = load_images(os.path.join(current_dir, "bar.gif"))
idleLeft = load_images(os.path.join(current_dir, "bar1.gif"))
runRight = load_images(os.path.join(current_dir, "bar1.gif"))
runLeft = load_images(os.path.join(current_dir, "bar3.gif"))
fall = load_images(os.path.join(current_dir, "bar1.gif"))status = {0: fall,1: idleRight,2: idleLeft,3: runRight,4: runLeft
}
status_num = 0canvas = tk.Canvas(root, width=imgWidth, height=imgHeight, bg='black', highlightthickness=0)
canvas.pack()player = canvas.create_image(imgWidth // 2, imgHeight // 2, image=idleLeft[0])# 说话文本列表
phrases = ["海鸥别叫啦,从今天起,我也是漂泊者啊","深山踏红叶,耳畔闻鹿鸣","可叹,落叶飘零","我很喜欢枫叶,可惜,枫叶红时,总多离别。","拾花鸟之一趣,照月风之长路","闲聊?自然!"
]def changeStatus():global status_numstatus_num = random.randint(1, 4)root.after(random.randint(1000, 5000), changeStatus)def falling():global status_num, posYif root.winfo_y() + imgHeight < HEIGHT - taskbarHeight:status_num = 0posY += 10  # 增加每次掉落的高度root.geometry(f"{imgWidth}x{imgHeight}+{posX}+{posY}")elif root.winfo_y() + imgHeight >= HEIGHT - taskbarHeight and status_num == 0:status_num = 1root.after(10, falling)  # 保持掉落速度

运行效果:

打包为exe可执行文件:

pyinstaller --onefile --noconsole --exclude-module numpy --exclude-module pandas --add-data "您的绝对路径\\bar.gif;." --add-data "您的绝对路径\\bar1.gif;." --add-data "您的绝对路径\\bar2.gif;." --add-data "您的绝对路径\\bar3.gif;." DestTop.py

完整源代码和gif资料包请下方获取👇↓↓↓

http://www.lryc.cn/news/469594.html

相关文章:

  • 使用 ASP.NET Core 8.0 创建最小 API
  • 气候服务平台ClimateSERV2.0简介(python)
  • Docker | centos7上对docker进行安装和配置
  • React--》掌握Valtio让状态管理变得轻松优雅
  • python爬虫百度图片
  • 前端开发:Vue中数据绑定原理
  • CTF-RE 从0到N: TEA
  • python 使用PIL获取图片长宽
  • 【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)
  • linux 驱动源码分析的理解。
  • 鸿蒙-任务栏右击退出 或 UIAbility窗口关闭,怎么弹框拦截
  • 【C++进阶篇】——STL的简介
  • 信息安全工程师(70)网络攻击陷阱技术与应用
  • Web保存状态的手段(Session的使用)
  • 第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
  • kafka 的高可用机制是什么?
  • 4.1.3 网站通信技术
  • Java-图书管理系统
  • python如何通过json以及pickle读写保存数据
  • 【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)
  • Linux vim编辑器
  • 普推知产:申请商标名称从4字改成3字下了初审!
  • Flink 状态精准一次性特性
  • 算法笔记day08
  • 在Selenium中有哪些元素对象操作方法?( ̄﹃ ̄)
  • sqli-labs靶场安装以及刷题记录-docker
  • 谷歌仓库管理工具repo
  • C#的自定义Tip窗体 - 开源研究系列文章
  • 目前最新 Reflector V11.1.0.2067版本 .NET 反编译软件
  • 软考:CORBA架构