如何在XPCE中按下按钮后打印功能结果

问题描述:

我试图通过按下XPCE中的按钮来打印功能结果。这里是我的代码:如何在XPCE中按下按钮后打印功能结果

/* 11) Max square */ 
max_square(M, A) :- 
    findall(P, country(A, P, _, _), L), 
    write('Max square in thousands km^2: '), 
    aggregate(max(E), member(E, L), M), 
    write(M), 
    forall(country(A, M,_, _),format(',~w~n', [A])). 

:- use_module(library(pce)). 

test:- 
    new(D, dialog), 
    new(W, window('Test', size(100, 100))), 
    send(D, append, new(button(B, max_square, message(@prolog, max_square, M, A)))), 
    send(D, below, W), 
    send(D, open), 
    !. 

但我有这样的错误:http://imgur.com/a/9N546 我怎么能解决这个问题?而我的第二个问题是:是否可以在对话窗口中打印这个结果?提前致谢。

+1

这不是错误,但是一个警告的例子。但是,无论如何你都应该纠正它,因为它通常意味着你可能在某个地方存在逻辑问题。单变量变量是仅在逻辑中出现一次的变量。除非你在其他地方引用它们,否则它们不会提供太多的用途。 – lurker

这是什么可以做

palindrome :- 
    new(D, dialog('Palindrome')), 
    new(Etiq, text_item('Is it a palindrome')), 
    send(D, append, Etiq), 
    new(Result, label), 
    send(D, append, Result), 
    send(D, append, button(test, message(@prolog, affiche, Etiq, Result))), 
    send(D, append, button(cancel, message(D, destroy))), 
    send(D, open). 

affiche(Etiq, Result):- 
    get(Etiq, selection, Text), 
    atom_codes(Text, Str), 
    ( reverse(Str, Str) 
    -> send(Result, selection, 'This is a palindrome') 
    ; send(Result, selection, 'This is not a palindrome')).