许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  ANSA二次开发揭秘:BCGUI简介(2)

ANSA二次开发揭秘:BCGUI简介(2)

阅读数 3
点赞 0
article_banner

欢迎大家同时关注我在仿真秀中的账号——“ANSA攻城狮 ”,会有更多干货文章以及课程。


上篇文章ANSA二次开发——BCGUI简介(1)介绍了常用的组件及他们在ANSA中的显示效果。那么这些组件是怎么被创建出来的,又是怎么布局排列的呢?

首先组件的创建是比较简单的。上文中提到的组件名字后面加上Create就是这个组件的创建函数。

下面以最简单的按键为例。

如何创建一个简单的按钮

创建步骤

第一步,需要导入必要的库。

import ansa
from ansa import guitk

第二步,不管你要创建什么样的界面,一定要先创建一个BCWindow窗口,所有的组件都是直接或者间接依附在BCWindow上的。这就像画画之前你需要一块画布,BCWindow就是那块画布。这里同理使用BCWindowCreate创建BCWindow窗口。这里对于BCWindowCreate中的参数暂且不做解释,后面的文章会对常见的组件创建函数的参数、返回值做详细的讲解。这里只需要知道BCWindowCreate()函数创建了BCWindow窗口,而w代表了新创建的BCWindow窗口。

import ansa
from ansa import guitk
def main():
        #创建BCWindows窗口
        w = guitk.BCWindowCreate("Buttons", guitk.constants.BCOnExitDestroy)

第三步,创建一个BCPushButton组件,且这个组件依附于BCWindow窗口。这里可以看到BCPushButtonCreate()中第一个参数是w,也就是BCWindow窗口。这里我们再创建一个点击按钮后执行打印“Button clicked”操作的函数clickFuction()。

import ansa
from ansa import guitk

def main():
        #创建BCWindows窗口
        w = guitk.BCWindowCreate("Buttons", guitk.constants.BCOnExitDestroy)
        #创建BCPushButton组件,依附于BCWindow窗口
        pbut = guitk.BCPushButtonCreate(w, "Open", clickFunction, None)

#点击按钮后触发的操作
def clickFunction(b, data):
        print("Button clicked")
        return 0

最后一步,显示窗口、控件

import ansa
from ansa import guitk

def main():
        #创建BCWindows窗口
        w = guitk.BCWindowCreate("Buttons", guitk.constants.BCOnExitDestroy)
        #创建BCPushButton组件,依附于BCWindow窗口
        pbut = guitk.BCPushButtonCreate(w, "Open", clickFunction, None)
        #显示窗口、控件
        guitk.BCShow(w)

#点击按钮后触发的操作
def clickFunction(b, data):
        print("Button clicked")
        return 0

我们来调用一下main()函数,屏幕上就会出现下面的界面。

按下按钮后会在ansa的左下角打印出“Button clicked”。

创建逻辑

至此我们已经成功创建出一个能够实现具体功能的BCPushButton按钮。相信看到这里大家已经能够了解Ansa二次开发创建界面操作的逻辑:

1.创建最底层的BCWindow窗口

2.在BCWindow上创建各种组件,组件可以依附于BCWindow,也可以依附于其他组件。这过程中会涉及到组件布局以及设置组件的一些函数。

3.BCShow()显示窗口及组件

下面我们具体将第一篇文章中不同组件的创建函数的参数、返回值详细讲解一下以及这些组件创建的逻辑。对于控件在ANSA中样子比较迷惑的同学,建议先移步到这里

ANSA常用控件创建函数详解

guitk.BCPushButtonCreate(parent,text,funct,data)

  • parentobject):BCPushButton所依附的父窗口或父组件
  • textstring):按键上文字
  • functcallback):点击按钮后执行的函数
  • dataanything):任何在点击按钮后执行的函数所需要的东西
  • Return:返回创建的BCPushButton这个组件,一般需要找一个变量接收,方便以后使用

guitk.BCLineEditCreate(parent,val)

  • parentobject):BCLineEdit所依附的父窗口或父组件
  • valstring):在一开始BCLineEdit显示的文字内容
  • Return:返回创建的BCLineEdit这个组件,一般需要找一个变量接收,方便以后使用

guitk.BCCheckBoxCreate(parent,text)

  • parentobjectBCCheckBox所依附的父窗口或父组件
  • textstring):在复选框右侧所显示的文字
  • Return:返回创建的BCCheckBox这个组件,一般需要找一个变量接收,方便以后使用

guitk.BCPopupMenuCreate(w)

  • wobject):所依附的父类控件,这里需要注意一般来说需要配合guitk.BCPopupMenuInsertItem()、guitk.BCPopupMenuInsertItemWithIcon()、 guitk.BCPopupMenuInsertPopupMenu()等函数使用,因为单独创建BCPopupMenu是无法显示的,你需要往里面插入一些其它的控件。
  • Return:注意返回的是BCMenu对象

guitk.BCComboBoxCreate(parent,val)

  • parentobject):所依附的父类控件或布局
  • vallist):下拉所展示的文字,是由字符串组成的列表
  • Return:注意在BCComboBox为空时返回0,否则返回BCComboBox本身

guitk.BCFrameCreate(parent)

  • parentobject):所依附的父类控件或布局
  • Return:所创建的BCFrame本身

注意这里创建的BCFrame是空白的,你需要使用guitk.BCBoxLayoutCreate()函数规定在BCFrame中的布局。

guitk.BCLabelTickerCreate(parent, text)

  • parentobject):所依附的父类控件或布局
  • textstring):BCTicker显示的内容
  • Return:注意返回BCTicker对象

这里创建的是一个可以自动滚动的BCTicker,当窗口相对于文字内容过小时文字自动滚动显示。用户也可以点击鼠标左键拖动文字进行查看。

guitk.BCSpinBoxCreate(parent)

  • parent(object) :所依附的父类控件或布局

BCSpinBox中显示的数字为整数,最小数值为1,最大值为100,每次点击上、下箭头所增加或减少的数值为1,且无法更改,所以一般建议使用更加灵活的BCSpinBoxCreateDouble()函数。

guitk.BCSpinBoxCreateDouble(parent,min,max,step,decimals)

  • parent(object) :所依附的父类控件或布局
  • min (float) :在BCSpinBox中显示的最小数值
  • max (float) :在BCSpinBox中显示的最大数值
  • stepint):每次点击上、下箭头所增加或减少的数值
  • decimalsint):显示小数显后几位数字
  • Return:返回BCSpinBox对象

guitk.BCSeparatorCreate(parent)

  • parent(object) :所依附的父类控件或布局
  • Reuturn:返回seperator frame

guitk.BCSliderCreate(parent,min,max,step,value,o)

  • parent(object) :所依附的父类控件或布局
  • min (integer) :设置显示的最小值
  • max (integer) :设置显示的最小值
  • step (integer) :滑块滑动一格所变化的数值
  • value (integer) :滑块最初位于的数值
  • o (integer) :控制滑块滑动的方向。 guitk.constants.BCVertical控制滑块上下滑动, guitk.constants.BCHorizontal控制滑块左右滑动

guitk.BCWidgetStackCreate(parent)

  • parent(object) :所依附的父类控件或布局

这里解释一下使用这个控件的逻辑

这里BCWidgetStackCreate()相当于你创建一个盒子,这个盒子可以放放很多的纸张,刚刚创建时这个盒子是空的,从外边往里看什么都没有。

这时需要使用guitk.BCWidgetStackAddWidget(ws,w,id)来创建一张张放进盒子里的纸张,ws就是BCWidgetStack这个盒子;w就是你创建的纸张,可以是BCFrame,也可以是BCPushButton,也可以是其他的控件;id就是你把这张纸贴上标签,它放在第几个。注意这里你从外边只能看见最上面纸的内容。

最后你需要使用guitk.BCWidgetStackRaiseWidget(ws,w)或者guitk.BCWidgetStackRaiseId(ws,id)来让你想查看的纸张位于第一个显示,比如你把最下面的纸抽上来放在最上面,Stack不就是堆叠的意思吗。

guitk.BCSplitterCreate(parent,o)

  • parent (object) :所依附的父类控件或布局
  • o (integer) :分割线的方向, guitk.constants.BCVertical纵向分割 , guitk.constants.BCHorizontal横向分割

guitk.BCTabWidgetCreate(parent)

  • parent (object) :所依附的父类控件或布局

BCTabWidget这个控件的使用逻辑和BCStackWidget控件的使用逻辑大致相同,唯一需要注意的是BCStackWidget是控件和控件之间是上下重合堆叠的关系,BCTabWidget中各个控件是相当于水平展开 ,你可以想象成下面这样。

BCTabWidgetCreate()需要配合guitk.BCTabWidgetAddTab(tw, w, label)函数使用,BCTabWidgetAddTab(tw, w, label)中将控件w以label形式的名字至于TabWidget控件中。相当于你把扑克插入到上面的图片中,当然事先你需要创建一个控件(扑克)。

guitk.BCTextEditCreate(p, text)

  • parent (object) :所依附的父类控件或布局
  • text (string) :初始现实的文字

guitk.BCTableCreate(parent,numRows,numCols)

  • parent (object) :所依附的父类控件或布局
  • numRows (integer) :行数
  • numCols (integer) :列数

guitk.BCListViewCreate(parent,numCols,colNames,sorting)

  • parent (object):所依附的父类控件或布局
  • numCols (integer) :列数
  • colNames (object) :包含列头的名字的字符串的列表
  • sorting (boolean) :False不可以排序;True可以排序

guitk.BCWidgetExpandCreate(parent)

parent (object):所依附的父类控件或布局

通常与guitk.BCWidgetExpandSetWidget(wex, managedWidget)一起使用,使用的逻辑是当文本内容过多时,首先使用guitk.BCWidgetExpandCreate()创建BCWidgetExpand,在BCWidgetExpand里创建需要显示内容的控件,然后使用guitk.BCWidgetExpandSetWidget()将需要显示内容的控件的内容在BCWidgetExpand中进行扩展。

guitk.BCLineEditCreate(parent,val)

  • p (object):所依附的父类控件或布局
  • val (string) :LineEdit中显示的内容

如果你只想用户输入整数或小数那么可以使用guitk.BCLineEditCreateInt()或guitk.BCLineEditCreateDouble()


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空