使用带有Graphics.SOE包的Haskell Gtk小部件

时间:2013-01-05 19:55:42

标签: haskell graphics gtk gtk2hs

我一直在阅读Paul Hudak的书The Haskell School of Expression,并使用其相关的基于gtk的图形库Graphics.SOE.Gtk(link到文档)进行小型2D绘图实验。

这个库非常基础,只能真正绘制形状。目前我正在编写一些需要特定GUI小部件的程序,如按钮和文本框。我的问题是:是否可以使用SOE库的绘图功能以及gtk2hs中的GUI小部件?例如,我可以编写一个程序,我可以点击一个按钮,使程序在同一窗口的另一个容器中绘制一个三角形。

我在网上搜索了一种方法,但大多数教程建议使用cairo用Gtk进行任何图形绘制; SOE graphic的API看起来像是一个相对独立的东西。

1 个答案:

答案 0 :(得分:2)

不,soegtk和常规gtk互动没有真正有意义的方式。原因是soegtk保持其所有数据类型都是抽象的;这是一个很好的做法,从“使实现者更容易改变实现而不改变界面”的观点,但它可能有点限制“我只是一个想要通过接口方式进行操作的用户不要承诺允许“观点。”

你可以:

  • 复制soegtk包中单个模块的文本,并调整导出行以导出更多内容并愉快地打破您不喜欢的任何抽象边界
  • 无意义地互动;例如让你的gtk按钮打开一个带有感兴趣图形的soegtk窗口
  • 了解不同的绘图库,例如cairodiagrams