RSS

gtk2hs

次はHaskellでGTK+をやるぞと思ったものの結構ややこしいので基礎から調査。

module Main where

import Control.Monad.Trans(liftIO) import Graphics.UI.Gtk main = do initGUI window <- windowNew windowSetDefaultSize window 640 400 -- onDestroy window mainQuit
on window deleteEvent (liftIO mainQuit >> return False)  widgetShowAll window mainGUI

普通にウィンドウが表示されます。 イベントの扱いが昔の資料の書き方はdeprecated。liftIOなんか使うのか。

module Main where

import Graphics.UI.Gtk

main = do
    initGUI
    window <- windowNew
    button <- buttonNewWithLabel "Hello World"
    onClicked button (putStrLn "Hello World")
    -- onClicked button $ do
    --   putStrLn "Hello World"
    containerSetBorderWidth window 10
    containerAdd window button
    onDestroy window mainQuit
    widgetShowAll window
    mainGUI

ボタンがつきます。コメント内は昔の実装。いまはdeprecated扱い。なんとなくわかった。