# 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里的内容进行显示 chat_example ### 休眠 右键桌宠,选择菜单项的第二栏(如图),进入该状态后左键不会产生对话,再次右键退出休眠状态 hibernate_example ### 执行扩展性脚本 右键桌宠,选择菜单项第三栏(如图),可用的脚本会显示出来,点击对应的脚本即可执行 exec_example ### 退出 右键桌宠,点击菜单项最后一栏 exit_example ## 配置详解 在dragonmaid.py(.exe)所在目录下存在config.ini,用于选定角色 character_select_config 角色存储在同目录下的configs中,如图 character_set_config configs下的目录结构: 文件夹的名称即为角色的名称 characters_config 每个角色由以下的文件(夹)定义 pictures:该角色会用到的图片素材 config.ini:关于该角色的配置 words.txt:左键时该角色会说的话的全集 character_define_config #### 关于角色内config.ini的配置 config_params_config 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) sync_example menu_cascade: 总菜单上显示的文字 menu_command_work:进入休眠状态对应菜单项上显示的文字 menu_command_exec: 执行脚本对应的菜单项上显示的文字 menu_command_rest:退出程序对应的菜单项上显示的文字 #### 关于words.txt的编写 words_example 编写规则: · 每一段显示词一行 ·每10个字符后加";"(英文半角分号) #### 关于Scripts 在dragonmaid.py(.exe)同目录下有Scripts文件夹,里面内容如下。每一个文件夹表示一个脚本,文件夹名即为显示在菜单中的脚本名 Scripts 每个脚本文件夹内如下 Scripts_inner_config description.txt:该扩展性脚本的说明文档,不会被显示 exec.pyw(.py,.exe):被执行的功能性脚本(exec不能改否则会找不到文,改后缀就好) 在dragonmaid.py(.exe)同目录下有buffer文件,里面存储桌宠在桌面上的实时位置以及长宽,可供扩展性脚本使用 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