如何在Haskell/Gtk2hs中创建一个图形化命令行界面?

7

我正在尝试使用Haskell创建我的第一个“真实程序”(解决多项式积分的程序),但是我完全被其中的一部分难住了:

我想要制作一个非常简单的东西,就像GHCi一样:

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

除了我的程序输出是图像(使用LaTeX将数学表达式转换为PNG),所以我不能使用System.IO。我认为使用我已经安装的gtk2hs是可能的,但我不知道如何创建这个输入/输出对话框。
如果您有时间,请向我展示如何完成。非常感谢!

我记得在某个地方看到过一个用Haskell编写的绘图程序,但是我似乎找不到它了。不过,我也不能完全确定它是用Haskell编写的。 - Joey Adams
2个回答

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教程/介绍。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接