在 Gtk2HS 中创建组合框小部件



我想用下面的代码创建一个ComboBox小部件:

void initGUI
window <- windowNew
...
cb <- comboBoxNewText
comboBoxAppendText cb "Option 1"
comboBoxAppendText cb "Option 2"
comboBoxSetActive cb 0
boxPackStart hb cb PackNatural 0
...

但出现此错误:

Couldn't match type ‘[Char]’
with ‘text-1.2.2.0:Data.Text.Internal.Text’
Expected type: ComboBoxText
Actual type: [Char]
In the second argument of ‘comboBoxAppendText’, namely
‘"Secuencial"’
In a stmt of a 'do' block: comboBoxAppendText cb "Secuencial"
In the expression:
do { void initGUI;
window <- windowNew;
set
window
[windowTitle := "A title",
windowDefaultWidth := 1024, ....];
vb <- vBoxNew False 7;
.... }

我只是按照本教程(http://www.muitovar.com/gtk2hs/chap4-2.html(并阅读文档(http://projects.haskell.org/gtk2hs/docs/gtk2hs-docs-0.9.12/Graphics-UI-Gtk-ModelView-ComboBox.html#v%3AcomboBoxInsertText(

我怎样才能让它工作?

提前谢谢。

我建议使用Hackage上的文档。您链接的文档现在可能已经过时了十年。

从该文档中,我们有

type ComboBoxText = Text
comboBoxAppendText :: ComboBoxClass self => self -> ComboBoxText -> IO Int

您传递"Option 1"作为ComboBoxText参数。在香草哈斯克尔中,这是一个String而不是一个Text- 正如错误所说。您可以packString,如

import qualified Data.Text as T
comboBoxAppendText cb (T.pack "Option 1")

或打开OverloadedStrings以自动为String文本执行此操作,如下所示:

{-# LANGUAGE OverloadedStrings #-}
comboBoxAppendText cb "Option 1"

最新更新