一种图形用户界面编写的方法、系统、设备和存储介质技术方案

技术编号:33345639 阅读:50 留言:0更新日期:2022-05-08 09:40
本发明专利技术提出了一种图形用户界面编写的方法、系统、设备和存储介质,该方法包括采用JSON文本作为图形用户界面的编写规范;读取JSON文本,在JSON文本符合规定的前提下,首先创建根组件,然后从外到内依次创建组件对象将将JSON文本解析为中间数据结构;在中间数据结构解析完成后,从根组件对象开始依次将JSON文本中对象类型转换为相应语言中对应组件类型,并最终按照父子结构转换为相应代码。基于该方法,还提出了一种图形用户界面编写的系统、设备和存储介质。本发明专利技术使用JSON作为编写语句可以简化GUI界面的编写方式,转换为不同语言实现,可以方便对界面内容的统一管理,同时实现一次编写,转换为不同语言实现的便利性。转换为不同语言实现的便利性。转换为不同语言实现的便利性。

【技术实现步骤摘要】
一种图形用户界面编写的方法、系统、设备和存储介质


[0001]本专利技术属于图形用户界面开发
,特别涉及一种图形用户界面编写的方法、系统、设备和存储介质。

技术介绍

[0002]GUI界面是开发桌面客户端必不可少的一部分,GUI界面即图形用户界面;但是图形用户界面的编写需要用户具备一定的编程能力,而且不同编程语言需要使用不同的编写形式,当不同项目中使用了不同语言时,就需要为每个项目配备不同的图形用户界面编程人员,而且不同图形用户界面无法做到统一管理。
[0003]现有技术中图形用户界面的编写方式包括:第一种,Python借助pyqt5代码进行GUI界面编写,可以借助Qt

Designer进行简单界面搭建,但是无法做到精确定位。第二种,Java使用JavaFx或Swing直接使用代码进行图形用户界面编写,需要用户具备较高的Java编程经验。所以现有技术图形用户界面的编写方式使用具体语言实现的代码编写繁琐,需要图形用户界面编写人员对语言本身具备较高的知识储备,但是同时熟悉多种语言的人员较为稀缺,所以需要为不同语言的配备专门的图形用户界面编写人员。不同语言的图形用户界面代码实现没有统一标准,无法做到在不同语言中迁移。

技术实现思路

[0004]为了解决上述技术问题,本专利技术提出了一种图形用户界面编写的方法、系统、设备和存储介质,使用JSON作为编写语句可以简化图形用户界面的编写方式。通过JSON将其转换为不同语言实现,可以方便对界面内容的统一管理。
[0005]为实现上述目的,本专利技术采用以下技术方案:
[0006]一种图形用户界面编写的方法,包括以下步骤:
[0007]采用JSON文本作为图形用户界面的编写规范;
[0008]读取所述JSON文本,在所述JSON文本符合规定的前提下,首先创建根组件,然后从外到内依次创建组件对象将所述将所述JSON文本解析为中间数据结构;
[0009]在所述中间数据结构解析完成后,从根组件对象开始依次将JSON文本中对象类型转换为相应语言中对应组件类型,并最终按照父子结构转换为相应代码。
[0010]进一步的,所述验证JSON文本是否符合规定的方法为:判断JSON文本是否错误或者判断JSON文本是否包含未指定的组件名称;如果出现错误或者包含未指定的组件,则停止执行并给出错误原因提示。
[0011]进一步的,所述创建根组件,然后从外到内依次创建组件对象将所述将所述JSON文本解析为待转换的数据结构的详细过程包括:
[0012]创建虚拟的根组件,并赋值为空;
[0013]从JSON文件最外层开始解析,如果最外层为对象类型,则根组件创建子组件列表;如果最外层为数组类型,则首先获取数组长度,并创造指定长度的子组件列表;
[0014]根据JSON文件中键值创建相应的对象类型,在所述对象类型创建成功后,将所述对象类型添加到所述子组件列表中;
[0015]读取所述键值对应的value的相关属性值,直到解析完整个JSON文本生成中间数据结构。
[0016]进一步的,所述读取所述键值对应的value的相关属性值的过程包括:
[0017]读取所述键值对应的value的sub

list值,如果包含所述sub

list值,则创建组件列表,如果不包含所述sub

list值,则不处理;
[0018]读取所述键值对应的value的style属性值,并将CSS格式字符串保存到对象的style属性中;
[0019]读取所述键值对应的value的除sub

list值和style属性值之外的其他属性值,并依次将所述其他属性赋值给相应对象属性。
[0020]进一步的,所述根据JSON文件中键值创建相应的对象类型包括:
[0021]如果键值为“button”,则创建Button程序对象;
[0022]如果键值为“input”,则创建Input程序对象。
[0023]进一步的,所述从根组件对象开始依次将JSON文本中对象类型转换为相应语言中对应组件类型的过程包括:
[0024]获取根组件中子组件列表,并将所述子组件列表中对象转换为实际语言环境下的对象值;
[0025]读取所述实际语言环境下对象的属性值,设置为待转换对象类型的属性值;
[0026]读取层叠样式表中的字符串值,并未对象设置样式,直到组件列表为空时停止。
[0027]进一步的,在所述获取根组件中子组件列表之前还包括:根据使用的语言环境,创建项目工程和配置文件生成项目启动环境。
[0028]本专利技术还提出了一种图形用户界面编写的系统,包括预处理模块、解析模块和转换模块;
[0029]所述预处理模块用于采用JSON文本作为图形用户界面的编写规范;
[0030]所述解析模块用于读取所述JSON文本,在所述JSON文本符合规定的前提下,首先创建根组件,然后从外到内依次创建组件对象将所述将所述JSON文本解析为中间数据结构;
[0031]所述转换模块用于在所述中间数据结构解析完成后,从根组件对象开始依次将JSON文本中对象类型转换为相应语言中对应组件类型,并最终按照父子结构转换为相应代码。
[0032]本专利技术还提出了一种设备,包括:
[0033]存储器,用于存储计算机程序;
[0034]处理器,用于执行所述计算机程序时实现所述的方法步骤。
[0035]本专利技术还提出了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法步骤。
[0036]
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
[0037]本专利技术提出了一种图形用户界面编写的方法、系统、设备和存储介质,该方法包括
采用JSON文本作为图形用户界面的编写规范;读取所述JSON文本,在所述JSON文本符合规定的前提下,首先创建根组件,然后从外到内依次创建组件对象将将JSON文本解析为中间数据结构;在中间数据结构解析完成后,从根组件对象开始依次将JSON文本中对象类型转换为相应语言中对应组件类型,并最终按照父子结构转换为相应代码。基于一种图形用户界面编写的方法,还提出了一种图形用户界面编写的系统、设备和存储介质。本专利技术使用JSON作为编写语句可以简化GUI界面的编写方式。通过JSON将其转换为不同语言实现,可以方便对界面内容的统一管理,同时实现一次编写,转换为不同语言实现的便利性。
附图说明
[0038]如图1为本专利技术实施例1一种图形用户界面编写的方法流程图;
[0039]如图2为本专利技术实施例1一种图形用户界面编写的方法中解析构建示意图;
[0040]如图3为本专利技术实施例1一种图形用户界面编写的方法中组件数据结构描述示意图;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种图形用户界面编写的方法,其特征在于,包括以下步骤:采用JSON文本作为图形用户界面的编写规范;读取所述JSON文本,在所述JSON文本符合规定的前提下,首先创建根组件,然后从外到内依次创建组件对象将所述将所述JSON文本解析为中间数据结构;在所述中间数据结构解析完成后,从根组件对象开始依次将JSON文本中对象类型转换为相应语言中对应组件类型,并最终按照父子结构转换为相应代码。2.根据权利要求1所述的一种图形用户界面编写的方法,其特征在于,所述验证JSON文本是否符合规定的方法为:判断JSON文本是否错误或者判断JSON文本是否包含未指定的组件名称;如果出现错误或者包含未指定的组件,则停止执行并给出错误原因提示。3.根据权利要求1所述的一种图形用户界面编写的方法,其特征在于,所述创建根组件,然后从外到内依次创建组件对象将所述将所述JSON文本解析为待转换的数据结构的详细过程包括:创建虚拟的根组件,并赋值为空;从JSON文件最外层开始解析,如果最外层为对象类型,则根组件创建子组件列表;如果最外层为数组类型,则首先获取数组长度,并创造指定长度的子组件列表;根据JSON文件中键值创建相应的对象类型,在所述对象类型创建成功后,将所述对象类型添加到所述子组件列表中;读取所述键值对应的value的相关属性值,直到解析完整个JSON文本生成中间数据结构。4.根据权利要求3所述的一种图形用户界面编写的方法,其特征在于,所述读取所述键值对应的value的相关属性值的过程包括:读取所述键值对应的value的sub

list值,如果包含所述sub

list值,则创建组件列表,如果不包含所述sub

list值,则不处理;读取所述键值对应的value的style属性值,并将CSS格式字符串保存到对象的style属性中;读取所述键值对应的value的除...

【专利技术属性】
技术研发人员:周兴国徐基法
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1