许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  ANSA前处理二次开发(四):GUI(2)- Buttons进阶教程

ANSA前处理二次开发(四):GUI(2)- Buttons进阶教程

阅读数 12
点赞 0
article_banner

ToolButton

  • 函数:guitk.BCToolButtonCreate
  • 调用格式:guitk.BCToolButtonCreate(p, iconname, label, funct, data)
    • p:父(parent,上级)widgetlayout
    • iconame:按钮使用图标名称(一般在Windows Designer中选内部图标,也可以不填:"")
    • label:按钮的名称、标签
    • funct:按钮被按时执行的函数
      • 函数格式:funct_name(b, data)
        • b:对象,BCPushButtonBCToolButton
        • data:函数中需要的参数,从BCToolButtonCreate中输入
    • data:输入进函数的参数,可以是anything(包括指针)
  • 示例:BCToolButton_1 = guitk.BCToolButtonCreate(BCBoxLayout_1, "breakpoint_24.png", "Tool", None, 0)
  • 按钮长度为名称字符长度(与PushButton的区别),可通过添加空格增长长度

实例:

程序

import ansa
from ansa import guitk
from ansa import constants
 
def main():
        w = guitk.BCWindowCreate("Buttons", guitk.constants.BCOnExitDestroy)
        
        #ToolButtons occupy only the space they need
        tbut = guitk.BCToolButtonCreate(w, "file_open.svg", "Open", clickFunction, None)
        
        #whereas PushButtons tend to occupy all available width
        pbut = guitk.BCPushButtonCreate(w, "Open", clickFunction, None)
        guitk.BCButtonSetIconFileName(pbut, "file_open.svg")
        guitk.BCShow(w)

def clickFunction(b, data):
        print("Button clicked")
        return 0

main()

输出

RadioButton

定义

  • 函数:guitk.BCRadioButtonCreate
    • 调用格式:guitk.BCRadioButtonCreate(p, label, funct, data)
      • funct:选择该按钮时执行的函数;
      • 存在多个选项时一般配合BCButtonGroupCreate()函数使用
      • 一般RadioButton都是好几个一起出现,所以会先定义ButtonGroup。因此函数一般不在这个地方单独定义,而是通过BCButtonGroupSetPressedFunction()来定义
  • 函数:guitk.BCButtonGroupSetPressedFunction
    • 调用格式:guitk.BCButtonGroupSetPressedFunction(bg, funct, data)
      • bg:BCButtonGroup
      • index:在窗口中选择第几个按钮所获得的索引值
      • data:传递进函数的数据

实例

程序

import ansa
from ansa import guitk
from ansa import constants

def add_function_name():
        TopWindow = guitk.BCWindowCreate("Liauto", guitk.constants.BCOnExitDestroy)
        BCFrame_1 = guitk.BCFrameCreate(TopWindow)
        BCBoxLayout_1 = guitk.BCBoxLayoutCreate(BCFrame_1, guitk.constants.BCVertical)
        bgroup = guitk.BCButtonGroupCreate(BCBoxLayout_1, "Color Group", guitk.constants.BCVertical )
        redRadioButton = guitk.BCRadioButtonCreate( bgroup, "Red", None, None )
        greenRadioButton = guitk.BCRadioButtonCreate( bgroup, "Green", None, None )
        blueRadioButton = guitk.BCRadioButtonCreate( bgroup, "Blue", None, None )
        guitk.BCButtonGroupSetPressedFunction(bgroup, buttonGroupPressed, None)
        guitk.BCShow(TopWindow)

def buttonGroupPressed(bg, index,  data):
        color_num = guitk.BCButtonGroupCount(bg)
        if index == 0:
                color_pick = "red"
        elif index == 1:
                color_pick = "green"
        elif index == 2:
                color_pick = "blue"
        print("There are {} colors, you have selected {}.".format(color_num,color_pick))

add_function_name()

输出

PushButton & BCSetUserDataKey

PushButton

  • 函数:BCPushButtonCreate
  • 调用格式:guitk.BCPushButtonCreate(p, text, funct, data)
    • text:按钮名称
    • data:传递到函数的数据
    • funct(b, data)
      • b:the BCPushButtonBCToolButton

BCSetUserDataKey

data储存在o中,通过key来调用

  • 调用格式guitk.BCSetUserDataKey(o, key, data)
    • o :对象,可以是widget或者layout,数据所储存的位置(指针)
    • key:设置传递数据的名称(关键词,自己设置)
    • data:要传递的数据,可以是变量、形参、或者字符串

BCGetUserDataKey

通过key来读取储存在对象o中的数据

  • 调用格式:guitk.BCGetUserDataKey(o, key)
    • o:对象,可以是widget或者layout
    • key:传递数据的名称
    • 注意:在传递函数 中的输入只有o,key

实例

程序

import ansa
from ansa import guitk
from ansa import constants

def main():
        w = guitk.BCWindowCreate("UserDataKey Example", guitk.constants.BCOnExitDestroy)
        
        blayout = guitk.BCBoxLayoutCreate(w, guitk.constants.BCHorizontal)
        button1 = guitk.BCPushButtonCreate(blayout, "Set Caption 1", setCaption, w)
        button2 = guitk.BCPushButtonCreate(blayout, "Set Caption 2", setCaption, w)
        button3 = guitk.BCPushButtonCreate(blayout, "Set Caption 3", setCaption, w)
        guitk.BCSetUserDataKey(button1, "key", "Caption 1")
        # 在对象button1中将"Caption 1"存储在"key"中
        guitk.BCSetUserDataKey(button2, "key", "Caption 2")
        # 在对象button2中将"Caption 2"存储在"key"中
        guitk.BCSetUserDataKey(button3, "key", "Caption 3")
        # 在对象button3中将"Caption 3"存储在"key"中
        
        guitk.BCBoxLayoutInsert(blayout, button1, -1)
        guitk.BCBoxLayoutInsert(blayout, button2, -1)
        guitk.BCBoxLayoutInsert(blayout, button3, -1)
        
        guitk.BCShow(w)
        
def setCaption(b, window):
        caption = guitk.BCGetUserDataKey(b, "key")
        # 在对象中搜寻"key"代表的数据并存入caption
        guitk.BCSetCaption(window, caption)
        return 0
        
if __name__ == '__main__':
        main()

输出

CheckBox

CheckBox:复选框,是否勾选

  • 函数:BCCheckBoxCreate
  • 调用格式:guitk.BCCheckBoxCreate(p, text)
  • 示例:cbenable = guitk.BCCheckBoxCreate(w, "Enable Button")

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

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

* 公司名称:

姓名不为空

手机不正确

公司不为空