以下程序无法按预期运行:
module Main where
import Graphics.UI.Gtk
import Control.Monad.IO.Class (liftIO)
import Control.Concurrent (forkIO)
main = do
unsafeInitGUIForThreadedRTS
window <- windowNew
windowSetDefaultSize window 200 200
label <- labelNew (Just "Hello")
forkIO (postGUISync (containerAdd window label))
on window deleteEvent (liftIO mainQuit >> return True)
widgetShowAll window
mainGUI
标签未添加到窗口中。我用-threaded编译。我做错了吗?
答案 0 :(得分:2)
我相信widgetShowAll
只会在执行时显示孩子,所以如果你的containerAdd
在此之后发生,它就不会出现。我建议在传递给postGUISync
的操作中明确显示标签,如下所示:
forkIO (postGUISync (containerAdd window label >> widgetShow label))