我在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).
我需要两个周期的选择来启动另一个函数。但是prolog无法打开包装操作。
如果对话框给我 Q=[第一个选择,第二个选择] 返回,则问题就解决了。
希望你能帮助我。我对此感到非常沮丧...
你应该阅读这个页面 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).