ANSA二次开发——BCGUI简介(3)

上篇文章ANSA二次开发——BCGUI简介(2)主要介绍了在创建GUI界面中常见的组件创建函数,那如何在窗口中将各种不同的组件排列出我们想要的布局呢?下面就介绍一些常用的布局类函数。

ANSA常用布局类函数

guitk.BCBoxLayoutCreate(p, o)

该函数可以在父类组件、布局下创建内部内容横向或者纵向布置的盒子。

  • p (object) –父类组件或布局.
  • o (integer) –guitk.constants.BCVertical纵向布置,guitk.constants.BCHorizontal横向布置。
  • Return-BoxLayout

布局如下所示,左边的是横向布局,右侧的是纵向布局,这里需要注意一点的是在BCBoxLayout中创建其他的组件或者布局时首先需要使用创建函数创建需要的组件或者布局,其次guitk.BCGridLayoutCreate(p,numRows,numCols)使用BCBoxLayoutInsert()来控制插入的位置,这里请大家咨询查找帮助文档熟悉函数的参数及返回值。

guitk.BCGridLayoutCreate(p,numRows,numCols)

  • p (object) –父类组件或布局.
  • numRows (integer) –(optional)可选参数,可以不填
  • numCols (integer) –(optional)可选参数,可以不填
  • Return-GridLayout

该布局在使用过程中需要与guitk.BCGridLayoutAddWidget(grid, w, row, col, alignment)配合使用。该函数是将组件w,以alignment的对齐方式,放置在BCGrid中的第row行,第col列。常见的对齐方式有:

  • guitk.constants.BCAlignAuto
  • guitk.constants.BCAlignLeft
  • guitk.constants.BCAlignRight
  • guitk.constants.BCAlignHCenter
  • guitk.constants.BCAlignJustify
  • guitk.constants.BCAlignTop
  • guitk.constants.BCAlignBottom
  • guitk.constants.BCAlignVCenter
  • guitk.constants.BCAlignCenter
  • guitk.constants.BCAlignHorizontal_Mask
  • guitk.constants.BCAlignVertical_Mask

下面据一些具体的例子来看一下这两种布局类的函数是如何使用的,假设我们要创建如下的窗口。

首先创建一个窗口,这里注意一定要使用guitk.BCShow(w),才能显示窗口。

接着我们创建第一部分中的BCLabel以及BCLineEdit组件。先创建一个BCBoxLayout用来容纳BCLabel以及BCLineEdit组件,注意在创建BCBoxLayout中方向是水平。

接着我们创建BCBoxLayout下面的BCGridLayout,这里配合BCGridLayoutAddWidget()来讲BCPushButton一一插入到相应位置

最后我们来建立最后的OK和Cancel按键,这里我们直接把这两个按键放在了BCWindow下,当然你再建立一个属于BCWindow的BCBoxLayout或者BCGridLayout,再把这两个按键在其中布局也可以,不过没什么必要。

这里再来一些优化,可以看到不同的部分之间挨得很近,布局太过紧凑。这里可以通过在BCBoxLayout、BCGridLayout、BCPushButton之间增加BCSplitter来解决。

guitk.BCButtonGroupCreate(p, title, o)

  • p (object) –父类组件或布局.
  • title (string) –BCButtonGroup组件显示的名称
  • o (integer) –BCButtonGroup中组件的排列方式,guitk.constants.BCHorizontal:横向排列;guitk.constants.BCVertical:纵向排列
    Return-BCButtonGroup

创建出来的效果大致是下面这个样子

该组件使用的逻辑是:

  1. 使用BCButtonGroupCreate()函数创建BCButtonGroup
  2. 创建BCButtonGroup中需要使用的组件,例如使用BCPushButtonCreate()创建按钮,所创建的组件的父类是BCButtonGroup,这时所创建的组件会依次插入到BCButtonGroup末尾。从左到右,从上到下所插入组件的id从0开始增大。这也是识别BCButtonGroup中组件的重要标识。

这里在介绍一下BCButtonGroupCreateHidden()的使用方法。这个函数和BCButtonGroupCreate()使用方法相同,只是他创建出的组件没有外框、没有名称,像下边这样

BCButtonGroupCreateHidden()函数使用的逻辑是

  1. 使用BCButtonGroupCreate()函数创建BCButtonGroup
  2. 创建BCButtonGroup中需要使用的组件,例如使用BCPushButtonCreate()创建按钮,但是所创建的组件的父类不应该是BCButtonGroup
  3. 使用BCButtonGroupInsert(bg, button, id)将所创建的button插入到bg中的第id个位置

大家一定现在有所疑惑,这么做不是脱裤子放屁吗,直接在BCWindow上创建BCRadioButton组件和上面的效果是一样的,有必要这么麻烦吗?

答案是有,而且非常有。这样做的好处是所创建出的BCButtonGroup中的组件可以保留原来的属性下面是BCButtonGroup相关的一些函数

比如说BCButtonGroupFind的功能可以让我们知道此时用户按下的是那个按键。如果不借助BCButtonGroup的特性直接在BCWindow中直接创建按键,我们是不能知道此时用户按下的是哪个按键。

下面的例子展示了,按下按钮后打印出BCButtonGroup中按钮的id以及相应的名字。

from ansa import guitkdef main():#创建BCWindowwindow = guitk.BCWindowCreate( "Exclusive ButtonGroup", guitk.constants.BCOnExitDestroy )#在BCWindow上创建纵向布局的BCButtonGroup        exclusive = guitk.BCButtonGroupCreateHidden( window, "", guitk.constants.BCVertical )#在BCButtonGroup中创建一个按钮list = guitk.BCPushButtonCreate( window, "List View", None, None )#将此按钮设置为按下后一直处于pressed的状态guitk.BCButtonSetToggleButton( list, True )#将按钮插入BCButtonGroup的第一个位置guitk.BCButtonGroupInsert(exclusive, list, 0)tree = guitk.BCPushButtonCreate( window, "Tree View", None, None )guitk.BCButtonGroupInsert(exclusive,tree, 1)guitk.BCButtonSetToggleButton( tree, True )guitk.BCButtonGroupInsert(exclusive, tree, 1)icon = guitk.BCPushButtonCreate( window, "Icon View", None, None )guitk.BCButtonGroupInsert(exclusive,icon, 2)guitk.BCButtonSetToggleButton( icon, True )guitk.BCButtonGroupInsert(exclusive, icon, 2)#设置按钮按下后的执行函数guitk.BCButtonGroupSetClickedFunction( exclusive, buttonGroupClicked, None )#设置一开始BCButtonGroup中那个按键被选中,这里是名为list的按钮一开始处于选中状态guitk.BCButtonGroupSetButton( exclusive, guitk.BCButtonGroupId(exclusive, list) )#打印一开始被选中的按钮的id,BCButtonGroupGetSelectedId用来获取按钮的idprint('Selected index: ' + str(guitk.BCButtonGroupGetSelectedId(exclusive)))#出选中的按钮在别的按钮被按下后最初被选中的按钮变为非选中状态guitk.BCButtonGroupSetExclusive(exclusive, True )guitk.BCShow(window)def buttonGroupClicked(bg, index, data):button = guitk.BCButtonGroupFind( bg, index )buttonText = guitk.BCButtonText( button )if (guitk.BCButtonGroupGetSelectedId(bg) == index ):print( 'Index is: ' + str(index)  + ' and button text is: ' + buttonText)else: print ('I should not be here')return 0if __name__ == '__main__':main()

ANSA二次开发——BCGUI简介(3)相关推荐

  1. ANSA二次开发——初识Entity

    在之前的四篇文章中 ANSA二次开发--BCGUI简介(1) ANSA二次开发--BCGUI简介(2) ANSA二次开发--BCGUI简介(3) ANSA二次开发--BCGUI简介(4) 我们已经对A ...

  2. python仿真搭建_仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤...

    原标题:仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤 作者 | 团长 仿真秀专栏作者 首发 |仿真秀App 导读:大家好,我是团长,是一名CAEer,还是一名C ...

  3. ANSA二次开发 - 在PyCharm上搭建ANSA/META二次开发环境

    文章目录 与PyCharm IDE集成 简介 ANSA和META自动补全 安装说明 在PyCharm中工作 与PyCharm IDE集成 简介   PyCharm 是一个集成开发环境(IDE).它是专 ...

  4. ANSA二次开发 - 抽中面的两种方法

    文章目录 (一) 使用Skin命令抽中面. (二) 使用Casting抽中面.   ANSA是一款非常强大和快捷的前处理软件,用过的人都知道,ANSA在几何清理.模型简化功能方面尤为突出.不仅如此,A ...

  5. ANSA二次开发 - 安装外部python库(以xlrd为例)

      Python由于其易用性和良好的可扩展性以及丰富的第三方库,而被越来越多的CAX软件作为二次开发的脚本语言.   ANSA前处理软件得二次开发语言就是Python语言,但其与常规Python发行版 ...

  6. ANSA二次开发 - 加密py文件为pyd格式

    文章目录 加密过程 CompileScript加密函数 函数名称 函数语法 功能描述 函数参数 返回类型 返回值 示例   有时候我们希望保护所开发的ANSA二次开发python代码,需要对明文代码进 ...

  7. Python 二次开发 Excel 简介

    目 录 一.前言 1.1 pywin32库 1.2 帮助文档 1.3 枚举 1.4 颜色 二.与 Excel 的连接 三.工作簿 Workbook 3.1 打开/新建 四.工作表 Worksheet ...

  8. VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的简介.案例应用之详细攻略 目录 调用SolidWorks功能简介 1.宏录制步骤 (1) ...

  9. ANSA二次开发 - Apps和ANSA插件管理

      扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab,查看更多精彩文章! 文章目录 Apps和ANSA插件管理 简介 创建一个插件 发布 Apps和ANSA插件管理 简介   插件管理器 ...

最新文章

  1. 2021惠阳一中高考成绩查询,惠阳一中实验学校2019高考成绩喜报、本科重本高优上线人数...
  2. mongodb 3.2性能测试
  3. mysql 游标的使用
  4. ZooKeeper、Eureka谁是最好的注册中心?
  5. Netty Java快速指南
  6. python标注审核_Python类型标注
  7. 腾讯发布企鹅号“达人计划”清退公告 清退后当月结算将被取消
  8. hash进阶:使用字符串hash乱搞的姿势
  9. 如何在Windows上安装Maven
  10. Java-数据库连接池第一篇
  11. 基于springboot vue h5 手机商城源码
  12. 计算机网络课程设计实验报告
  13. 项目采集自动刷新 php,PHP168 CMS自动采集-PHP168 CMS自动更新-齐博CMS站群管理系统...
  14. java 生成水印_Java生成文字水印
  15. Cisco2960交换机配置(二)
  16. 记一次npm install 报RequestError: connect ETIMEDOUT 20.205.243.166:443和RequestError: socket hang up
  17. ipados远程linux软件,JingOS Linux平板系统v0.6下载发布 支持多点触摸手势
  18. python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~
  19. Arduino Timer
  20. H.264码流分析及编解码调试

热门文章

  1. 线性代数---全排列和对换
  2. 根据字段值查询其所在的表、字段
  3. java布尔值默认值是_Java中的布尔值和布尔值的默认值
  4. Java多线程设计模式之顺序控制-两个小案例
  5. Hive---Hive函数
  6. 嵌入式Linux驱动开发笔记(未完待续。。。)
  7. 教你10招 提高免疫力
  8. idea:堆内存不足
  9. [PeterDLax著泛函分析习题参考解答]第6章 Hilbert 空间
  10. 编译原理-14-回填技术