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

ラベルはウィンドウに追加されません。-threaded でコンパイルします。私はそれを間違っていますか?

4

1 に答える 1

2

widgetShowAll実行時は子しか表示されないと思いますので、その後に発生した場合はcontainerAdd表示されません。次のように、渡すアクションでラベルを明示的に表示することをお勧めしますpostGUISync

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