2

我正在编写一个 XPCE 程序,其中用户可以在文本窗口中输入文本,然后由 Prolog 程序进一步处理(例如,通过运行拼写检查)。

因此,我需要一个文本窗口,可以在其中自由输入文本(包括段落、标点符号等),然后将文本存储在 Prolog 变量中以供进一步处理。

使用 text_item 很容易(并且效果很好),如下所示:

 send(D, append(new(Text,   text_item('Enter Text'))))

但是,这只允许输入一行,不适合较长的文本。

“编辑器”环境看起来很适合这个任务;我可以使用创建一个编辑器

send(D, append(new(Text1,editor),below))

在这里,可以输入多行的文本,包括段落等。但是现在,我如何访问用户输入的文本?它显然没有存储在变量 Text1 中。我读到了一个 text_buffer,但我不知道如何将它链接到编辑器。

4

1 回答 1

0

改编自XPCE 指南

:- use_module(library(pce)).

multiline_input(Text) :-
        new(D, dialog('Prompting for name')),
        send(D, append, new(TI, editor)),
        send(D, append,
             button(ok, message(D, return,
                                TI?contents))),
        send(D, append,
             button(cancel, message(D, return, @nil))),
        send(D, default_button, ok), % Ok: default button
        get(D, confirm, Answer),     % This blocks!
        send(D, destroy),
        Answer \== @nil,             % canceled
        get(Answer, value, Text).

只需将 text_item 替换为编辑器,获取其内容,然后从中获取价值。

于 2019-08-08T10:04:45.897 回答