使用gtk2hs和glade在haskell中使用GUI

时间:2012-08-01 08:30:44

标签: haskell glade gtk2hs

我使用gtk2hs和glade创建了一个GUI,然后将其传递给main::IO()中的haskell代码。然后我对Windows的编码说明 标签 按钮 条目文字 即可。如,

entry         <- xmlGetWidget xml castToEntry "entry1"
applyButton   <- xmlGetWidget xml castToButton "button1"

然后点击“应用”按钮

onClicked applyButton $ do
number <- get entry entryText

将值传递给变量数字

然后我写了一个函数来平衡这个数字

sqr :: Int -> Int -> IO ()
sqr number = number * number
在mainGUI之后

哪个不起作用!!!!!!

应该是

I / p:在GUI中从用户处获取一个号码

o / p:GUI中显示的数字的平方

1 个答案:

答案 0 :(得分:1)

好吧,似乎你正在将IO和计算部分混合在一起。

你有一个纯函数来完成你需要的计算,如下所示:

sqr :: Int -> Int -> Int
sqr number = number * number

您需要通过发出IO操作来对事件做出反应,即更新gui元素的状态。我假设您正在尝试将值输出到同一条目中。

onClicked applyButton $ do
  num_str <- entryGetText entryText
  let number = read num_str
      squared = sqr number
  entrySetText entryText (show squared)

请注意,entryGetText / SetText使用字符串,因此您需要转换为Ints。