我能否在OCaml toplevel上构建图形界面?

11

关于交互式toplevel和图形UI编程的几个问题:

  1. 是否可以从ocaml toplevel动态构建图形界面?

  2. 也可以使用Graphics库吗?

2个回答

12
  1. 你可以在与lablgtk主循环集成的LWT toplevel中使用:

在基于debian的系统上安装lwt-glib和lablgtk:

apt-get install liblwt-glib-ocaml-dev liblablgtk2-ocaml-dev

在OCaml toplevel中加载所有内容:

#use "topfind";;
#require "lwt.simple-top";;
#require "lwt.glib";;
#require "lablgtk2";;

然后初始化GTK和LWT集成:

GMain.init ();;
Lwt_glib.install ();;

然后播放:

let w = GWindow.window ();;
w#show ();;
  1. Graphics并没有像GTK一样的主循环,所以这里没有问题。但是在GTK应用程序内部,你应该使用cairo。

太棒了。我已经寻找这样的技巧很久了! - Fabrice Le Fessant
可以使用图形库吗? - Fabrice Le Fessant
3
图形界面库(Graphics)没有像GTK一样的主循环,因此在这方面没有问题。但在GTK应用程序中,您应该使用cairo替代。 - Pierre Chambart
1
有没有带有图形界面的模块可以使用Cairo? - Fabrice Le Fessant
1
实际上,OCaml中有一个与Cairo库绑定的接口,可以查看ocaml-cairo - Çağdaş Bozman

6
你还可以使用Graphics模块(参见手册)。你需要自己管理很多东西(事件循环、工具包),但它比lablgtk简单得多:
#load "graphics.cma";;
Graphics.open_graph " ";;

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