2010-11-26 56 views
7

我試圖在haskell中創建我的第一個「真正的程序」(如果多項式解決積分的東西),但我完全難住這個部分:如何在haskell/gtk2hs中創建圖形命令行?

我想做一些非常簡單的東西GHCI:

> user input 
program output 
> user input 
program output 
> user input 
program output 
> 

,除了我的程序輸出的圖像(用乳膠把數學表達式爲PNG格式) - 所以我不能做到這一點使用System.IO。我認爲可以使用我設法安裝的gtk2hs,但我無法弄清楚如何進行這種輸入/輸出對話。

如果你有時間,請告訴我它是如何完成的。非常感謝!

+0

我以爲我在Haskell的某個地方看到了一個圖形程序,但我似乎無法找到它。然後,我也不完全確定它是在Haskell中。 – 2010-11-26 01:38:20

回答

4

感謝ClaudiusMaximus,我們設法提出了以下解決方案。

module Main where 

import Graphics.UI.Gtk 

main = do 
initGUI 

---------------- 

win <- windowNew 
onDestroy win mainQuit 

vb <- vBoxNew False 3 
log <- vBoxNew False 2 

sc <- scrolledWindowNew Nothing Nothing 
scrolledWindowSetPolicy sc PolicyNever PolicyAutomatic 

sw <- layoutNew Nothing Nothing 

en <- entryNew 

---------------- 

scrolledWindowAddWithViewport sc log 
boxPackStart vb sc PackGrow 0 
boxPackStart vb en PackNatural 0 
set win [ containerChild := vb ] 

en `onEntryActivate` do 
    txt <- entryGetText en 
    entrySetText en "" 
    l <- labelNew (Just txt) 
    boxPackStart log l PackNatural 0 
    widgetShowAll log 
    Just ran <- scrolledWindowGetVScrollbar sc 
    adj <- rangeGetAdjustment ran 
    max <- adjustmentGetUpper adj 
    adjustmentSetValue adj max 

---------------- 

widgetShowAll win 
mainGUI 
0

我想你應該先實現後端,即解析命令並創建輸出圖像的代碼。如果可行,那麼你可以實現GUI。基本上,你需要一些簡單的輸入文本輸入和一個輸出文本和繪圖部件。由於GUI編程(恕我直言)不是微不足道的,你應該先看看一些GTK/gtk2hs教程/介紹。