3

以下程序无法按预期工作:

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

标签不会添加到窗口中。我用 -thread 编译。我做错了吗?

4

1 回答 1

2

我相信widgetShowAll这只在执行时显示孩子,所以如果你containerAdd在那之后发生,它就不会出现。我建议在传递给的操作中明确显示标签postGUISync,如下所示:

forkIO (postGUISync (containerAdd window label >> widgetShow label))
于 2012-02-10T21:02:38.570 回答