1

Python とのインターフェースを持つ CFD 可視化プログラムのスクリプトを書いています。ユーザーがいくつかの値を入力できる汎用ダイアログを作成しました。ここで、入力が false の場合にそのダイアログを繰り返したいと思います (これは、1 つの変数が他の変数よりも大きいことを意味します)。

items = []
items.append(['text',ITEM_TEXT,"Automatically save the evaluation in data file(s)\n",""])
items.append(['text',ITEM_TEXT,"Determine the range of timesteps that you want to save:",""])
items.append(['step_begin',ITEM_INT,"Start timestep:","Start timestep",first_step,first_step,timesteps])
items.append(['step_end',ITEM_INT,"End timestep:","End timestep",timesteps,first_step,timesteps])
a = CeiQtGenericDialog(items,None,"Save evaluation","Ok","Cancel")
ret = a.doit()

if (ret > 0):
    for i in a.getValues():
        if (i=='step_begin'):
            begin = a.getValue(i)
        if (i=='step_end'):
            end = a.getValue(i)

    if (begin > end):
        items2 = []
        items2.append(['text',ITEM_TEXT,"Start timestep must be smaller than end timestep!!",""])
        a = CeiQtGenericDialog(items2,None,"Error","Ok","Cancel")
        ret = a.doit()

        if (ret > 0):
            ????

そこには、a.getValues()以前の汎用ダイアログの値が格納されています。最後に、前の一般的なダイアログに戻りたい場合。つまり、特定の行から始まるコードを繰り返して、ユーザーが前に汎用ダイアログで「step_begin」と「step_end」を繰り返し入力できるようにしたいのですが、どうすればそれが可能ですか?

EDIT/ ユーザーが一般的なダイアログで [OK] をクリックすると、ret は値 1 を取得します ユーザーがキャンセルをクリックすると、ret は値 0 を取得します

4

2 に答える 2

0

結果が得られない間は、この部分全体を繰り返す必要があると思います

while True:
    a = CeiQtGenericDialog(items,None,"Save evaluation","Ok","Cancel")
    ret = a.doit()

    if (ret < 0): 
        break # if cancel dialog will not proceed data analysis
    for i in a.getValues():
        if (i=='step_begin'):
            begin = a.getValue(i)
        if (i=='step_end'):
            end = a.getValue(i)

    if (begin < end):
        break # if everything is ok move out 
    items2 = []
    items2.append(['text',ITEM_TEXT,"Start timestep must be smaller than end timestep!!",""])
    a = CeiQtGenericDialog(items2,None,"Error","Ok","Cancel")
    ret = a.doit()
        if ret < 0:
           break # if cancel dialog will not proceed data analysis
于 2013-11-06T07:51:26.587 に答える