Prolog XPCE如何从文本项中获取多个值?

时间:2013-10-23 17:43:55

标签: prolog swi-prolog xpce

我有一个包含多个文本项元素和一个按钮的对话框。我怎么能够 检索值并使用它们?

new(D, dialog('Add a recipe')),
send(D, append(new(NameItem,   text_item('Name')))),
send(D, append(new(InstItem,   text_item('Instruction')))),
send(D, append(new(IngrItem,   text_item('Ingredients')))),
send(D, append(new(TimeItem,   text_item('Time')))),
send(D, append(button('Store', message(D, return, '1')))),
get(D, confirm, Rvalue),
write(NameItem), nl,
write(InstItem), nl,
write(IngrItem), nl,
write(TimeItem), nl,
free(D),

2 个答案:

答案 0 :(得分:1)

您必须通过

查询text_item的选择
get(NameItem, selection, SelNameItem),

如果您使用 XPCE谓词,则可以使用 NameItem?选择

答案 1 :(得分:1)

test :-
    new(D, dialog('Add a recipe')),
    send(D, append(new(NameItem,   text_item('Name')))),
    send(D, append(new(InstItem,   text_item('Instruction')))),
    send(D, append(new(IngrItem,   text_item('Ingredients')))),
    send(D, append(new(TimeItem,   text_item('Time')))),
    send(D, append(button('Store', message(D, return, '1')))),
    send(D, show(true)),
    get(D, confirm, _Rvalue),
    maplist(getv, [NameItem, InstItem, IngrItem, TimeItem]),
    free(D).

getv(T) :- get(T, selection, V), writeln(V).

你可以完全处理一个列表,应用于每个元素(一个textitem对象)一个“获取文本”。操作