Abaqus GUI程序开发之常用控件使用方法(十九):提示框的使用方法

完整的应用程序应包含警告提示、错误提示及信息提示灯机制,提示信息可以辅助用户正确地应用软件,避免不必要的操作失误。下面将介绍Abaqus二次开发中常用的提示方法。

一、警告提示框

警告并非错误,警告是在没有反不可饶恕的错误下的提示。注意使用场合。

1.1 语法

showAFXWarningDialog(owner, message, buttonIds=YES[NO|CANCEL, tgt=None, scl=0)

1.2 示例

1.3 代码展示

界面文件【testwarningdialog_standardDB.py】(其实看了前面的话控件使用方法,没啥好说的)

# -* - coding:UTF-8 -*- 
from abaqusConstants import *
from abaqusGui import *
from kernelAccess import mdb, session
import os

thisPath = os.path.abspath(__file__)
thisDir = os.path.dirname(thisPath)

###########################################################################
# Class definition
###########################################################################

class testwarningdialog_standardDB(AFXDataDialog):
   
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self, form):

        # Construct the base class.
        #
       
        AFXDataDialog.__init__(self, form, '创建带孔板',
            self.OK|self.CANCEL, DIALOG_ACTIONS_SEPARATOR)
       
        okBtn = self.getActionButton(self.ID_CLICKED_OK)
        okBtn.setText('OK')
            
        GroupBox_1 = FXGroupBox(p=self, text='', opts=FRAME_GROOVE)
        AFXTextField(p=GroupBox_1, ncols=12, labelText='name:', tgt=form.partnameKw, sel=0)
        AFXTextField(p=GroupBox_1, ncols=12, labelText='Width (w):', tgt=form.widthKw, sel=0)
        AFXTextField(p=GroupBox_1, ncols=12, labelText='height(h):', tgt=form.heightKw, sel=0)
        AFXTextField(p=GroupBox_1, ncols=12, labelText='radius(r):', tgt=form.radiusKw, sel=0)
        GroupBox_2 = FXGroupBox(p=self, text='Diagram', opts=FRAME_GROOVE)
        fileName = os.path.join(thisDir, r'platewithhole.png')
        icon = afxCreatePNGIcon(fileName)
        FXLabel(p=GroupBox_2, text='', ic=icon)

注册文件【testwarningdialog_standard_plugin.py】

# -* - coding:UTF-8 -*- 
from abaqusGui import *
from abaqusConstants import ALL
import osutils, os
class testwarningdialog_standard_plugin(AFXForm):
    [
        ID_WARNING,
    ] = range(AFXForm.ID_LAST, AFXForm.ID_LAST+1)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self, owner):
        
        # Construct the base class.
        #
        AFXForm.__init__(self, owner)
        FXMAPFUNC(self, SEL_COMMAND, self.ID_WARNING,
            testwarningdialog_standard_plugin.onCmdWarning)
        self.radioButtonGroups = {}

        self.cmd = AFXGuiCommand(mode=self, method='testoptionbutton',
            objectName='testModul', registerQuery=False)
        pickedDefault = ''
        self.partnameKw = AFXStringKeyword(self.cmd, 'partname', True, 'pp')
        self.widthKw = AFXFloatKeyword(self.cmd, 'width', True, 50)
        self.heightKw = AFXFloatKeyword(self.cmd, 'height', True, 50)
        self.radiusKw = AFXFloatKeyword(self.cmd, 'radius', True, 2)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def getFirstDialog(self):

        import testwarningdialog_standardDB
        return testwarningdialog_standardDB.testwarningdialog_standardDB(self)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def doCustomChecks(self):

        # Try to set the appropriate radio button on. If the user did
        # not specify any buttons to be on, do nothing. 
#        if self.radiusKw.getValue()<0:
#            showAFXErrorDialog(getAFXApp().getAFXMainWindow(),
#                 'radius must be lager than zero.')
#            return False
#        else:
#            return True
        
        if self.radiusKw.getValue()<0:
            showAFXWarningDialog( self.getCurrentDialog(),
               '您输入的半径值为负数,确定继续吗?',
                AFXDialog.YES | AFXDialog.NO | AFXDialog.CANCEL,
                self, self.ID_WARNING)
            return False
        else:
            return True
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def okToCancel(self):

        # No need to close the dialog when a file operation (such
        # as New or Open) or model change is executed.
        #
        return False
    def onCmdWarning(self, sender, sel, ptr):
        print 'haha'
        if sender.getPressedButtonId() == \
            AFXDialog.ID_CLICKED_YES:
                self.issueCommands()
        elif sender.getPressedButtonId() == \
            AFXDialog.ID_CLICKED_NO:
                self.deactivate() 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Register the plug-in
#
thisPath = os.path.abspath(__file__)
thisDir = os.path.dirname(thisPath)

toolset = getAFXApp().getAFXMainWindow().getPluginToolset()
toolset.registerGuiMenuButton(
    buttonText='testwarningdialog_standard', 
    object=testwarningdialog_standard_plugin(toolset),
    messageId=AFXMode.ID_ACTIVATE,
    icon=None,
    kernelInitString='import testModul',
    applicableModules=ALL,
    version='N/A',
    author='N/A',
    description='N/A',
    helpUrl='N/A'
)

核心处理文件【testModul.py】

# -* - coding:UTF-8 -*-
from abaqus import *
from abaqusConstants import *
def testoptionbutton(partname, width, height, radius):
    mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)
    mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.0, 0.0), 
        point2=(width, height))
    mdb.models['Model-1'].sketches['__profile__'].CircleByCenterPerimeter(center=(
        width/2, height/2), point1=(width/2+radius, height/2))
    mdb.models['Model-1'].Part(dimensionality=THREE_D, name=partname, type=
        DEFORMABLE_BODY)
    mdb.models['Model-1'].parts[partname].BaseShell(sketch=
        mdb.models['Model-1'].sketches['__profile__'])
    p = mdb.models['Model-1'].parts[partname]
    session.viewports['Viewport: 1'].setValues(displayedObject=p)
    del mdb.models['Model-1'].sketches['__profile__']

二、错误提示框

2.1 语法

showAFXErrorDialog(owner,message,tgt=None, sel=0)

2.2 实例

2.3 代码

和1.3相比,仅仅是在注册文件中有少量改动:

三、信息提示框

语法:

showAFXInformationDialog(owner, message,tgt=None, sel=0)

和前面一样,也是在注册文件中稍作修改即可,这里不再赘述。

功能是弹出一个提示窗口。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刃小木啦~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值