pyqt qtableview 添加下拉框控件_ACT开发指南|如何动态显示属性控件

首先,我们一起考虑如下开发场景:在ACT向导的建模阶段,将三种结构形式:Cube、Cylinder和Sphere的创建流程放在一个步骤中。

其中,Cube创建需要输入Length,Cylinder创建需要输入Radius和Height,Sphere创建需要输入Radius。

那么我们需要定义一个 select 下拉框: Primitive 和三个 float 属性输入控件: Length 、 Radius 和 Height 。 4fc3142a7a66b55f262efc1fafdf4ee3.png 图 1 控件全显示 如上所示,我们如果将所有属性控件都显示在界面上,就会显得很臃肿而且不友好,不够优雅和智能。 那么如何实现如下的控件的动态显示效果呢?即根据Primitive下拉框选择的值,改变Length、Radius和Height三个属性控件的可见性。 82b854217b5a269d0ab5dfeb297a8048.png 图 2 控件动态显示 接下来,小田老师就给大家分享在ACT向导开发中,实现属性控件动态显示的两种方法:XML文件定义和回调函数实现。 方法1:XML文件定义 在ACT帮助文档下《ACT XML Reference:ACT XML Tags》中,我们找到标签,会发现一个attribute:visibleon=,说明如下: 3b401c5a33d81a92806b58edd257a5e1.png 图 3 visibleon 标签属性 可以按照如下步骤实现: (1)将Primitive定义为<propertygroup>,并给定“select”的control类型,通过options给定下拉选项值; (2)定义Length、Radius和Height三个<property>控件,并给定“float”的control类型,放在Primitive属性组下; (3)给定三个属性控件的visibleon属性值为Primitive下拉框中选项值,多个值用“|”隔开。对应的XML结构如下: f733373dc16e90bfdaeb4bc643e0b7be.png 图 4 XML 文件代码 方法2:回调函数实现 在ACT向导中,每个属性控件都有对应的回调函数(callbacks),用于处理与用户输入间的界面交互。 我们可以为Primitive属性定义合适的回调函数,然后去更改其他float控件中与可见性相关的属性值。 在ACT帮助文档中,我们发现可以使用< onactivate> 回调函数,而且在通过修改控件的 Visible 属性值,可以更改其可见性。 959d89c1e4d6207476e2a4cdbf4fad07.png 图 5 onactivate 回调函数 可以按照如下步骤实现: ( 1 )将 Primitive 定义为 ,并给定“ select ”的 control 类型,通过 options 给定下拉选项值; ( 2 )为 Primitive 属性添加回调函数 <onactivate> ,给定方法 dynamicVisibility (函数名任取); ( 3 )定义 Length 、 Radius 和 Height 三个 <property> 控件,并给定“ float ”的 control 类型; 0dbdb55c5afdfee8a48142d3bd74c45a.png 图 6 XML 文件回调函数定义 ( 4 )在与 XML 关联的 IronPython 文件中实现回调函数 dynamicVisibility :通过判断 Primitive 当前属性值 (Value) ,然后修改相应 float 控件的可见性 (Visible) 属性;代码如下: 47b5448b0e9e23d323f38ce4af5d9aa5.png 图 7  回调函数方法实现 两种方法对比 两者方法没有孰好孰坏,只是使用场景不一样: XML定义方式更简单上手,如果只需要更改属性控件显示时,推荐使用。 回调函数方法更强大,不仅可以动态显示控件,还能更改帮助内容、与图形窗口交互等。 而且二者可以配合使用,大家可以根据使用场景灵活选用。 最后,在后期文章更新中,我会分享ANSYS ACT开发系列文章,大家有关心的技术点和问题,欢迎大家参与读者讨论,后续文章会根据大家内容讨论的热度决定更新顺序。

点击立即学习Python语言在ANSYS的应用10讲》,掌握ANSYS ACT开发能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值