我正在制作一个简单的图像下载器来学习一些基本的 gui 东西在 haskell 中。我有一个静态文本框,它在下载文件时显示文件名。
我遇到的问题是这个小递归函数。
saveImgs :: [String] -> IO ()
saveImgs [] = return ()
saveImgs (x:xs) = do
let filename = tail $ x =~ "/[^/]*$"
logMessage x
maybeWrite filename =<< (simpleHttp x) `X.catch` statusExceptionHandler
saveImgs xs
where maybeWrite f b | b == L.empty = return ()
| otherwise = L.writeFile f b
它需要保存图像的 url 列表,并更新 textCtrl 小部件。除了,它只更新一次文本,在整个事情完成后。有没有办法手动更新文本框的文本?
更新:我尝试添加一个计时器并启动它,但它没有做任何事情。
timerClk <- timer f [on command := windowRefresh logBox False]