基于GUI界面显示属性的方法及存储介质与流程

文档序号:28545544发布日期:2022-01-19 15:02阅读:160来源:国知局
基于GUI界面显示属性的方法及存储介质与流程
基于gui界面显示属性的方法及存储介质
技术领域
1.本公开实施例涉及软件开发领域,特别涉及一种基于gui界面显示属性的方法及存储介质。


背景技术:

2.tcl(tool command language)是一种脚本语言,被用于原型开发、脚本编程、gui(graphical user interface)和测试等方面。
3.通常,可通过以命令行的形式来运行各种指令,对对象中的属性进行查看或修改。然而一个指令只能修改单一属性的值,效率低下。如何使得对象的属性的查看和修改更加便利是一个亟待解决的问题。


技术实现要素:

4.有鉴于此,本公开提出了一种基于gui界面显示属性的方法及存储介质。
5.本公开第一方面,提供了一种基于gui界面显示属性的方法。所述方法包括:运行用于处理对象的指令;响应于所述指令的运行,获得所述对象的标识符;根据所述标识符确定所述对象是否满足给定条件;响应于所述对象满足所述给定条件,获取所述对象的属性以及所述属性的值;以及根据所述对象的属性以及所述属性的值生成所述gui界面,其中,所述对象的所述属性的值在所述gui界面中可编辑。
6.本公开第二方面,提供了一种计算装置,包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行改组指令以使得所述计算装置执行第一方面所述的方法。
7.本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行第一方面所述的方法。
8.本公开实施例通过充分利用现有指令的标识符,进而获取待显示的多组属性以及属性的值,同时开发gui界面对这些属性以及属性的值提供显示或修改操作,方便了使用,进而提高了开发效率。
附图说明
9.为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图
10.图1为根据本公开实施例的一种主机的示意图。
11.图2a为根据本公开实施例的一种基于gui界面显示属性的过程的示意图。
12.图2b为根据本公开实施例的tcl对象的示意图。
13.图2c为根据本公开实施例的gui界面的示意图。
14.图3为根据本公开实施例的一种基于gui界面显示属性的方法的流程图。
具体实施方式
15.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
16.需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
17.图1示出了根据本公开实施例的一种主机100的示意图。如图1所示,主机100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在主机内部的通信连接。
18.处理器102可以是中央处理器(central processing unit,cpu)、图像处理器、神经网络处理器(npu)、微控制器(mcu)、可编程逻辑器件、数字信号处理器(dsp)、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
19.存储器104可以配置为存储数据(例如,指令、tcl对象的列表、计算机代码、对象的属性与属性的值等)。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本公开的基于gui界面显示属性的方法的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码、对象的属性与属性的值等)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘、固态硬盘(ssd)、闪存、存储棒等。
20.网络接口106可以配置为经由网络向主机100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、wifi、近场通信(nfc)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(nic)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
21.外围接口108可以配置为将主机100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
22.总线110可以被配置为在主机100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(usb端口、pci-e总线)等。
23.需要说明的是,尽管上述主机架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该主机架构还可以包括实现正常运行所
必需的其他组件。此外,本领域的技术人员可以理解的是,上述主机架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
24.上述主机100例如可以支持tcl语言的运行。
25.通常,运行一个关于tcl对象的指令可以向用户返回该对象的一个id。例如,运行如下tcl代码可以获得作为tcl对象的活动窗口的信息,赋值给变量a,并得到一个返回值obj:0xle591290。
26.》set a[gui::get_active_window]
[0027]
obj:0xle591290
[0028]
但是,该返回值对于用户而言是没有意义的。例如,当用户需要对该活动窗口进行操作时,需要反复对变量a进行引用和操作,如下方代码所示。
[0029]
》db::show_attributes-of$a
[0030]
name id type children...
[0031]
》db::get_attribute id-of$a
[0032]
101
[0033]
》db::set_attribute id 102-of$a
[0034]
根据上面的示例性代码,当用户需要查看全部属性时,可以输入db::show_attributes-of$a指令。当该指令被执行后,所有的属性(例如,属性name、属性id、属性type等)在返回值(name id type children...)中可以全部呈现出来。当需要显示某一个属性的值时,比如属性id的值,用户可以输入db::get_attribute id-of$a指令并获知:属性id的值为101。当用户需要将属性id的值编辑为102时,可以输入db::set_attribute id 102-of$a指令。
[0035]
然而,这种操作方法既不直观也不高效,同时与tcl对象相关的返回值也没有得到利用。
[0036]
图2a为根据本公开实施例的一种基于gui界面显示属性的过程200的示意图。如图2a所示,过程200可以至少涉及:指令210、标识符220、tcl对象的列表230、内存地址240、tcl对象250的属性252、属性的值254以及gui界面260。
[0037]
指令210可以包括用户输入到tcl命令行窗口中的命令行,用于处理一个tcl对象(例如,tcl对象250)。指令210可以由在例如主机100上运行的软件系统执行,在此不具体赘述。
[0038]
例如,命令行可以是set a[gui::get_active_window]。通过执行set a[gui::get_active_window],可以返回一个标识符220并且将标识符220赋值给变量a。标识符220是运行指令210后产生的返回值(例如,oa:0x102383)。该返回值可以与tcl对象关联。在一些实施例中,该返回值可以与tcl对象的内存地址关联。在一些实施例中,标识符220可以是一个数字,例如图2a中的120598、102383等。
[0039]
指令210还可以进一步包括可视化显示tcl对象的命令行。例如,命令行可以是gui::show_object$a。通过执行该命令行,关于tcl对象的信息可以被进一步获取和处理。
[0040]
在一些实施例中,可以在tcl对象的列表230中查找标识符220。
[0041]
tcl对象的列表230储存多个tcl对象的标识符及其对应的内存地址。在一些实施例中,可以先在列表230中查找标识符220(例如,102383)。如果标识符220在列表230中被找
到,则返回与该标识符220对应的内存地址240(例如,0x80008908),也就是,tcl对象的内存地址。如果标识符220在列表230中不存在,则返回一个信息,指示列表230不存在标识符220。
[0042]
在一些实施例中,为了实现在tcl对象的列表230中能快速查找,tcl对象的列表230可以是散列表或二叉树。
[0043]
根据返回的内存地址240,可以在内存中访问tcl对象(例如,tcl对象250),并读取tcl对象的属性252以及属性的值254。在一些实施例中,属性252的类型可以是一个字符串,例如,图中的属性name、type、id与children均为字符串。在一些实施例中,属性的值254的类型可以是数值、字符、字符串或tcl对象。
[0044]
tcl对象的属性252以及属性的值254可以进一步被可视化地显示。例如,gui界面260。在gui界面260中,用户可以查看或编辑属性252以及属性的值254。
[0045]
图2b为根据本公开实施例的tcl对象250的示意图。
[0046]
在一些实施例中,用户可以通过执行如下指令来创建tcl对象。
[0047]
》set dlg[gui::create_dialog abc-title abc]
[0048]
上述指令的执行可以创建一个名称为abc的默认对话框,该对话框可以包含两个按钮(分别是help与close),如图2b中的250a。
[0049]
在创建该abc对话框的同时,tcl对象250a的标识符也被生成,且tcl对象250a的内存地址也被同步获取。tcl对象250a的标识符和内存地址可以被保存到tcl对象的列表(例如,tcl对象的列表230)中,并返回该标识符。
[0050]
在此基础上,用户可以进一步通过执行以下指令来创建新的tcl对象250b。
[0051]
》set b[gui::create_label lb-label“hellow
”‑
parent$dlg]
[0052]
通过执行上述指令,可以在tcl对象250a中新建一个标签250b,该标签名为lb,且值为“hellow”。
[0053]
类似地,对象250b的标识符也被生成,且tcl对象250b的内存地址也被同步获取。tcl对象250b的标识符和内存地址可以被保存到tcl对象的列表(例如,tcl对象的列表230)中,并返回该标识符。
[0054]
与创建tcl对象相对应的是,当tcl对象被销毁时,可以根据tcl对象的内存地址确定其标识符,并从tcl对象的列表中删除该标识符以及该标识符对应的内存地址。
[0055]
上述过程通过清空失效的数据,防止tcl对象的列表无限增长,保证了tcl对象的列表中始终存储的是有效的tcl对象。
[0056]
图2c为根据本公开实施例的gui界面260的示意图。为了方便叙述,图2c的示意图实际上是由tcl对象250b生成的gui界面,也就是运行指令g$b后生成的gui界面。
[0057]
如图2c所示,gui界面260中的attribute对应于tcl对象250b中的属性252,gui界面260中的value对应于tcl对象250b中的属性的值254。属性252可以是tcl对象的特征信息。例如,属性parent的值为tclobject《dialog》,表明tcl对象250b是寄生在一个dialog对象(见图2b的tcl对象250a)上的。属性shown的值为true,表明标签(即图2b中的“hellow”标志)是可见的,如果将属性shown编辑为false,那么该标签将隐藏不可见。属性252还可以是用户自行添加的。例如,用户可以输入指令db::add_attribute$b-name“xx
”‑
value“yy”,那么gui界面260上将会增加新的属性xx以及属性的值yy(图2c中并未画出)。
[0058]
用户之所以可以在gui界面中编辑各个属性,是因为这些属性的相关方法已经被定义了。代码如下:
[0059][0060]
在上述示例中,get_shown方法与set_shown方法分别用于显示与编辑属性shown。由于属性parent没有相关set方法,属性parent的值不可变更,因此,属性parent为只读的属性。与之相对的是,属性shown为可写的属性。可以理解的是,若xx也为可写的属性,那么指令db::add_attribute$b-name“xx
”‑
value“yy”会在程序中自动的为属性xx建立两个方法。例如,可以是名称为get_xx与set_xx的两个方法,分别用于显示与编辑属性xx。
[0061]
在本公开的实施例中,主机100响应于处理用户输入的set b[gui::create_label lb-label“hellow
”‑
parent$dlg]指令210,返回tcl对象的标识符220,并将标识符220存储在变量b中。同时,主机100响应于lb对象的创建,根据lb的内存地址生成标识符220,并将标识符220与lb的内存地址一并存储到tcl对象的列表230中。当用户输入g$b指令后,主机100根据标识符220,也就是变量b,判断该标识符220是否在tcl对象的列表230中。若该标识符220在tcl对象的列表230中,主机100根据标识符220在tcl对象的列表230中读取tcl对象250的内存地址240,并通过内存地址240获取对象的属性252以及属性的值254。根据对象的属性252以及属性的值254,主机100生成gui界面260,其中,对象的属性252以及属性的值254在gui界面260中可编辑。
[0062]
图3为根据本公开实施例的一种基于gui界面显示属性的方法300的流程图。该方法可由计算装置(例如,图1所示的主机100)实施。参照图3所示,该方法300可以包括如下步骤。
[0063]
在步骤s310中,主机100运行用于处理对象的指令(例如,图2a所示的指令210)。在一些实施例中,处理该对象的指令为创建tcl对象的指令,并且,响应于该tcl对象的创建,存储该tcl对象的内存地址到该tcl对象的列表中,生成与该tcl对象的内存地址关联的标识符,以及返回标识符。在一些实施例中,处理该对象的指令为销毁tcl对象的指令,并且响应于该tcl对象的销毁,确定该tcl对象的内存地址;根据该tcl对象的内存地址确定该tcl对象的标识符;在tcl对象的列表中删除该标识符。
[0064]
在步骤s320中,响应于指令的运行,主机100获得对象的标识符(例如,图2a所示的标识符220)。
[0065]
在步骤s330中,主机100根据标识符确定对象是否满足给定条件。在一些实施例中,给定条件为该对象是tcl对象(例如,图2a所示的tcl对象250),在tcl对象的列表(例如,图2a所示的tcl对象的列表230)中查找标识符;以及响应于在该tcl对象的列表中查找到该标识符,确定该对象满足给定条件。在一些实施例中,tcl对象的列表为散列表或二叉树。
[0066]
在步骤s340中,响应于所述对象满足所述给定条件,主机100获取对象的属性(例如,图2a所示的属性252)以及属性的值(例如,图2a所示的属性的值254)。在一些实施例中,
根据标识符在tcl对象的列表中读取该对象的内存地址(例如,图2a所示的内存地址240),根据该对象的内存地址获取该对象的属性以及属性的值。
[0067]
可以理解的是,如果所述对象不满足所述给定条件,则方法300结束。例如,当所述对象中不包括可编辑的属性时,方法300无法为其生成可编辑的gui界面,此时方法300结束。
[0068]
在步骤s350中,主机100根据对象的属性以及属性的值生成gui界面(例如,图2a所示的gui界面260),其中,该对象的属性以及属性的值在gui界面中可编辑。
[0069]
需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
[0070]
本公开实施例还提供了一种计算装置,包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行改组指令以使得所述计算装置执行本公开实施例提供的基于gui界面显示属性的方法。
[0071]
本公开实施例还提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行本公开实施例提供的基于gui界面显示属性的方法。
[0072]
上述对本公开的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0073]
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0074]
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
[0075]
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1