每次用户与我的程序交互时,我都很难找出如何进行更改。很难解释,所以这里有一个例子(Haskell + wxhaskell):
simulate :: Int -> Frame () -> IO ()
simulate qNr window = do
fdata <- readFile "qarchive"
case (split (listTake (split fdata '\n') qNr 0) '#') of
(qst:a:b:c:coralt:answer:x) -> do
-- GUI Controls Initialization (buttons,text,etc...)
nextButton <- button window [text := "Next Question ->", on command := set infoField [text := "Next Question"], position := pt 185 155]
return ()
main :: IO ()
main = start gui
gui :: IO ()
gui = do
window <- frame [text := "Question program", clientSize := sz 640 480]
headerText <- staticText window [text := "Title Text", fontSize := 20, position := pt 5 5]
simulate 0 window
return ()
我希望在按下“下一个问题”按钮时更改一些小部件。我想将这些小部件更改为我从文件中读取的一些值。如何跟踪当前的问题编号是什么?我实际上不能将 questionNumber 作为变量增加,因为 Haskell 不允许这样的事情。我想还有另一种方法可以做到这一点。
例子:
Initialize GUI
Read data from file
If button is pressed, increment question number by 1 and change widgets.
您如何以实用的方式解决此类问题?