# dragonmaid
**Repository Path**: dynamder/dragonmaid
## Basic Information
- **Project Name**: dragonmaid
- **Description**: 一个桌面宠物程序,可能日后也会有强大的功能呢
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2022-04-05
- **Last Updated**: 2025-01-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Dragonmaid 1.1.0
## 基本信息
作者:dynamder
版本:v1.1.0
资源地址:[dragonmaid: 一个桌面宠物程序,可能日后也会有强大的功能呢 (gitee.com)](https://gitee.com/dynamder/dragonmaid)
### 功能
· 做吉祥物
· 支持.exe,.py,.pyw后缀的扩展性功能脚本(好像这么叫有点小问题),用以完成一些奇妙的工作
### 更新日志
1.修改了图片的读取方式,图像的质量有所提升
2.实装Scripts功能,可以执行一些扩展性脚本了
3.一些bug的修复以及微调
### 本项目现存的问题
· 绘制时透明背景采用设置灰色(0x808080,RGB:128,128,128)为透明的方式,若原图片中存在可能会造成显示问题,目前只能通过替换为肉眼难以分辨出区别的颜色(如0x808081,RGB:128,128,129)解决。
· 显示的图像存在轻微的描边框现象
· 拖拽时图像会将锚点移动至鼠标位置,看起来不是特别舒适
· 你甚至可以把桌宠拖到屏幕外面去...
### 计划
· 支持gif动画的播放
· 针对不同的words内容,显示对应的图片
· 设计脚本语言,方便扩展性脚本的编写
## 使用说明
运行dragonmaid_rebuild.py或打包好的dragonmaid_rebuild.exe来启动程序
启动的画面:
左上角就是我们的桌宠,屏幕中央是启动时会显示的图片
### 移动
拖拽桌宠即可
### 对话
左键单击桌宠,会随机选择words.txt里的内容进行显示
### 休眠
右键桌宠,选择菜单项的第二栏(如图),进入该状态后左键不会产生对话,再次右键退出休眠状态
### 执行扩展性脚本
右键桌宠,选择菜单项第三栏(如图),可用的脚本会显示出来,点击对应的脚本即可执行
### 退出
右键桌宠,点击菜单项最后一栏
## 配置详解
在dragonmaid.py(.exe)所在目录下存在config.ini,用于选定角色
角色存储在同目录下的configs中,如图
configs下的目录结构:
文件夹的名称即为角色的名称
每个角色由以下的文件(夹)定义
pictures:该角色会用到的图片素材
config.ini:关于该角色的配置
words.txt:左键时该角色会说的话的全集
#### 关于角色内config.ini的配置
mate_show:桌宠的图片
mate_min:桌宠休眠时显示的图片
mate_menu:桌宠在右键菜单第一栏显示的图片
mate_chat:桌宠对话时对话框的图片
greet:启动时显示在屏幕中央的图片
mate_show_width:桌宠显示的长(水平方向,下同)
mate_show_height:桌宠显示的宽(竖直方向,下同)
mate_min_width:桌宠休眠状态时显示的长
mate_min_height:桌宠休眠状态时显示的宽
mate_menu_width:菜单栏图片的显示长
mate_menu_height:菜单栏图片的显示宽
mate_bubble_width:对话框的显示长
mate_bubble_height:对话框的显示宽
sync_x:对话框与桌宠同步位置时额外的水平方向平移距离
sync_x_ref: sync_x相对于的水平长
sync_y:对话框与桌宠同步位置时额外的竖直方向平移距离
sync_y_ref: sync_y相对于的竖直长
**注**:下图为sync_x=0,sync_y=0时,对话框图片(黄色矩形)与桌宠(黑色矩形)的同步示意图
记对话框左上角坐标为(x1,y1),桌宠左上角坐标为(x2,y2)
则x1=x2-mate_bubble_width
y1=y2-((mate_show_height//3)-mate_bubble_height)
menu_cascade: 总菜单上显示的文字
menu_command_work:进入休眠状态对应菜单项上显示的文字
menu_command_exec: 执行脚本对应的菜单项上显示的文字
menu_command_rest:退出程序对应的菜单项上显示的文字
#### 关于words.txt的编写
编写规则:
· 每一段显示词一行
·每10个字符后加";"(英文半角分号)
#### 关于Scripts
在dragonmaid.py(.exe)同目录下有Scripts文件夹,里面内容如下。每一个文件夹表示一个脚本,文件夹名即为显示在菜单中的脚本名
每个脚本文件夹内如下
description.txt:该扩展性脚本的说明文档,不会被显示
exec.pyw(.py,.exe):被执行的功能性脚本(exec不能改否则会找不到文,改后缀就好)
在dragonmaid.py(.exe)同目录下有buffer文件,里面存储桌宠在桌面上的实时位置以及长宽,可供扩展性脚本使用
## 关于utils
在dragonmaid.py(.exe)同目录下有utils文件夹,存储一些辅助工具(如pixel_adapter)
在utils文件夹下的辅助工具不会同扩展性脚本一起加载到菜单项
**预置工具**:pixel_adapter.py
功能:将图片中RGB值为(128,128,128)的像素替换为RGB(128,128,129),alpha值不变,防止因透明颜色的设置造成显示问题
pixel_adapter.py同目录下的source文件夹放你想要修改的图片,输出结果在adapted文件夹内
## 附
构建项目时python 运行环境
· python 3.9.7
· numpy 1.22.3
· opencv-python 4.5.5.64
· Pillow 9.0.1
本程序在Windows 11, Windows 10上运行无误,别的操作系统未做测试(大概率不太行)
## Q&A
Q:发行版需要的运行环境是什么?
A:发行版不需要特别安装python环境,但如果不装无法运行python功能性脚本
Q:关于更新?
A:不定期更新,但不会弃坑(学生党......)
------
## 鸣谢
感谢github用户arcticfox1919的项目tkinter-tabview,本项目中的DragWindow类的灵感来源于此
https://github.com/arcticfox1919/tkinter-tabview/blob/master/dragwindow.py