如何从Haskell中的textView获取文本?
我不确定我做得对。我可以在TextView类中找到的唯一“get”函数是textViewGetBuffer,它评估为IO TextBuffer,而不是字符串。
我正在尝试使用textBufferGetText :: self - >获取IO TextBuffer的字符串值。 TextIter - > TextIter - >布尔 - >字符串,但无法弄清楚要指定什么作为TextIter值。
TextIter值指定获取文本的范围的开始和结束,但是当我查找TextIter数据类型时,它没有指定我可以使用的任何值构造函数。
name = textBufferGetText (textViewGetBuffer txtView) start end True
非常感谢任何建议/帮助。
答案 0 :(得分:1)
(免责声明:我不知道如何在Haskell中使用GTK,我不能在这台机器上安装它,所以我无法测试这个)
查看文档,有几种方法可以从TextIter
获取TextBufferClass
值。您可能感兴趣的是textBufferGetStartIter
和textBufferGetEndIter
,每个TextBufferClass
并返回IO TextIter
,因此您可以编写类似
textViewGetValue :: TextViewClass self => self -> IO String
textViewGetValue tv = do
buf <- textViewGetBuffer tv
start <- textBufferGetStartIter buf
end <- textBufferGetEndIter buf
value <- textBufferGetText buf start end True
return value
哪个应该有效。从技术上讲,最后两行可能只是textBufferGetText buf start end True
,但我认为这会使发生的事情变得更清楚。
编辑:我应该说我在Graphics.UI.Gtk.Multiline.TextView
,Graphics.UI.Gtk.Multiline.TextBuffer
和Graphics.UI.Gtk.Multiline.TextIter
中找到了这些方法,因此您可能还必须导入这些方法。但我不知道你的命名空间中已有的内容。