2010-11-26 58 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教程/介绍。