我正在编写一个XPCE程序,其中用户可以在文本窗口中输入文本,然后由Prolog程序进一步处理(例如,通过运行拼写检查)。
因此,我需要一个文本窗口,在其中可以自由输入文本(包括段落,标点符号等)。然后将文本存储在Prolog变量中以供进一步处理。
使用text_item实现这一点很简单(而且效果很好),如下所示:
send(D, append(new(Text, text_item('Enter Text'))))但是,这只允许输入一行,这不适合较长的文本。
“编辑器”环境看起来非常适合这项任务;我可以使用以下命令创建编辑器
send(D, append(new(Text1,editor),below))在这里,用户可以输入多行的文本,包括段落等。但是现在,我如何访问用户输入的文本?它显然没有存储在变量Text1中。我读到过一个text_buffer,但我不知道如何将它链接到编辑器。
发布于 2019-08-08 18:04:46
改编自XPCE guide
:- 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,获取它的内容,然后从中获得价值。
https://stackoverflow.com/questions/57399142
复制相似问题