我使用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中显示的数字的平方
答案 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。