0

私はそれを解決する方法の手がかりを見つけることができない Prolog に関する別の問題を抱えています。

ここに私のコードがあります

list(Q):-
new(D,dialog('Sehenswuerdigkeiten')),
send_list(D,append,
[
new(Von,menu(von,cycle)),
new(Zu,menu(zu,cycle)),
new(@button,button('Los',message(@prolog,packing,Von?selection,Zu?selection,Q)))

]),
findall(X,sehenwuerdigkeit(X),Y),
send_list(Von, append,Y),
send_list(Zu, append,Y),
send(D,open).

packing(X,Y,Q):-Q=[X,Y]. 

:-consult('sw.pl'),list(Q).

別の機能を開始するには、両方のサイクルを選択する必要があります。しかし、プロローグはパッキング操作を開くことができません。

ダイアログで Q=[first selection,second selection] が返された場合、問題は解決されています。

あなたが私を助けてくれることを願っています。私はこれについて非常にイライラしています...

4

1 に答える 1

0

このページを読む必要がありますhttp://www.swi-prolog.org/packages/xpce/UserGuide/modal.html

list(Q):-
    new(D,dialog('Sehenswuerdigkeiten')),
    send_list(D,append,
      [new(Von,menu(von,cycle)),
       new(Zu,menu(zu,cycle)),
       new(_,
           button('Los',
              message(D,return,[Von,Zu])))]),
    findall(X,city(X),Y),
    send_list(Von, append,Y),
    send_list(Zu, append,Y),
    get(D,confirm, Answer),
    get(Answer, element(1), A),
    get(A, selection, AV),
    get(Answer, element(2), B),
    get(B, selection, BV),
    send(D, destroy),
    Q = [AV, BV].

city(berlin).
city(london).
city(paris).
city(rom).
于 2012-05-25T09:27:35.710 に答える