Skip to content

foreverseer/obj2file

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

万物皆对象

(1)摘要

“很多事物都是对象形式,具有其属性 比如人,具有姓名,性别,年龄,头像 而excel或数据库工具可以轻松储存“姓名,性别,年龄”等信息,但是对头像却无能为力,其他复杂内容更无能为力 本项目拟开发一种软件,可以实现复杂对象的储存和查看”

快速上手

  • 构建一个包特定数据结构的文件夹

    • 如包括head.jpg
    • 在该文件夹中新建info.json,并键入内容
      {
          "name":"梁启超",
          "age": 56,
          "sex": ""
      }
    • 上述代码构建了三个字段,代表显示的字段信息
  • 将该文件夹以zip格式压缩,并修改名称为 梁启超.person

  • 在object_model文件夹中新建模板文件person.json,并键入内容

      {
      "data": {
          "head": {
          "type": "image",
          "position": [0, 0, 3, 1]
          },
          "name": {
          "type": "str",
          "position": [0, 0, 1, 0]
          },
          "age": {
          "type": "int",
          "position": [0, 0, 2, 0]
          },
          "sex": {
          "type": "str",
          "position": [0, 0, 3, 1]
          }
      }
      }
    • 上述代码中,data负责配置info.json中数据的显示方式,head表示一个数据段,type内的内容是类型,即图像(image),将读取.person文件中所有名称为head的图像,position表示它在网格中的位置,如[0,0,3,1]表示从0行0列开始,占3行1列
  • 在命令行键入如下代码,即可显示

    python obj2file.py 梁启超.person
    • 没装python的,就
      obj2file.exe 梁启超.person
    • 或者右键 梁启超.person,打开方式,设为使用obj2file.exe打开

(2)复杂对象的储存方式:

以文件的形式储存

如张三的信息,储存为“张三.person”

其中person为自定义后缀名,内部储存格式实际为zip

解压后可得到json文件“info.json”和数据目录“data”

其中info.json文件储存字段数据,如“姓名,性别,年龄”

而data内部储存复杂对象,如图片,文件(如pdf,word),目录等

(3)复杂对象的查看方式

类似图像查看器,可以左右自由翻页

但是在图像旁边可以显示一些额外信息,如“姓名,性别,年龄”

各个内容的位置,大小可以自由定义。

如在object_model中定义了.person文件的储存和查看方式,通过撰写person.json的方式

则每次打开person后,就可以以该方式实现查看

(4)最终效果

一个文件夹中的目录如下

————————

a.person

b.person

c.person

....

————————

双击打开a.person

则像图像查看器一样,打开该文件

在预定义的位置以组件的形式,显示头像,姓名,年龄,性别等

按左右键可切换上下文件

对某个组件左键,可选中该组件(滑动改变组件位置,或放大缩小,删除等)

对某个组件双击,可打开该组件(如双击头像,则在图像查看器中打开),对文字双击则可修改

对某个组件右键,则可打开对组件的设置

(5)总结

该软件是对图像查看器,文件查看器的一种补充和增强

让数据以文件的形式呈现,打开,修改,比excel等软件更符合人类的认识

(6)技术栈

  • 编程语言:python
  • 界面设计:pyside2
  • 文件压缩和打包:
  • 打包exe:pyinstaller

(7)项目计划

本项目的支持的结构化数据可分为文件,字段,目录三类,后续可继续添加

字段

  • [√] 字符串(str):可匹配任意可格式化为字符串的内容
  • [√] 格式化字符串(format_str):格式化字符串可调用其他变量
  • [×] 替换图标:可将特定字符串替换为图标,如“男”替换为'男.icon'以图片形式展示字符串

对文件的支持

  • [√] 图像(image):image(可匹配任意图像格式),png,bmp,jpg
  • [√] 可变列表图像(list_image):同上,可显示可变数量的图像
  • [√] 视频(video):video(可匹配任意视频格式),mp4,avi等

其他

  • [×] 目录(folder):对目录的处理
  • [×] 可视化界面编辑器:通过可视化编辑器,免受代码困扰
  • [×] 文件互转解压机制:将文件夹与对象文件互转

(8)特别久远的未来规划

  1. 可接入excel,数据库等软件,实现数据一键互转
  2. 添加网络储存方式,如:在person文件中不储存头像图像以节省空间,而留下链接,每次打开.person文件时,自动从链接下载图像并显示
  3. 添加对任意文件的支持,可用“万物皆对象”软件打开pdf,word等文件,打开后可显示自定义信息,如文件作者,主要内容截图等
  4. 添加可编程接口,可以运行自定义程序,如判作业时,关闭"a.homework"文件,则自动将“a.homework”中“已阅”字段设为“是”