OCaml + LablGTK2:多行文本框

时间:2013-04-29 16:46:47

标签: user-interface textbox ocaml gtk2 lablgtk

我试图弄清楚如何在图形小部件中实例化多行文本框。 LablGTK2在文档方面似乎非常有限,并且API很少开始看起来像我想要的东西。

我已开始针对Lablgtk2文档https://developer.gnome.org/gtk3/stable/gtkobjects.html交叉引用原始GTK2文档http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk/html/GText.html

但是,我发现的最好的教程或简单/清晰的例子使用了非常有限的单行文本输入框: http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/x1155.html

我发现一些简单的,简单的派生示例非常适合学习基础知识。有没有人有示例小插图,显示如何使用OCaml& amp;设置多行文本Lablgtk / lablgtk2?或者更好的教程建议,以显示开发多行文本框(这是任何基于GUI的程序中非常重要的功能)?理想情况下,我想将文本输入连接到这个多行文本到我编写的OCaml模块,该模块将处理该文本,然后GUI将在GUI上显示处理结果。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

您可以将GtkTextView小部件用于多行文本:

let _ =
    (* prepare main window *)
    let window = GWindow.window () in
    window#connect#destroy ~callback:GMain.Main.quit;

    (* add text view with scroll bars *)
    let scroll = GBin.scrolled_window
                 ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC
                 ~packing:window#add () in
    let textview = GText.view ~packing:scroll#add_with_viewport () in

    (* set text *)
    textview#buffer#set_text "multi-\nline\ntext";

    (* show everything and enter main loop *)
    window#show ();
    GMain.Main.main ()

答案 1 :(得分:1)

你说文档非常稀疏是正确的。因此,我们必须通过互相学习来学习。像猴子......

我打赌ocamleditor应该包含如何执行此操作的示例:https://forge.ocamlcore.org/projects/ocamleditor/

此外,OCP正在创建一个简单的OCaml编辑器,它也应该有用:https://github.com/OCamlPro/ocp-edit-simple

答案 2 :(得分:1)

lablgtk2源代码提供了一开始就易于理解的基本代码片段(至少比现实代码更容易)

如果您使用godi,它们将安装在$ GODI_PRFIX / doc / godi-lablgtk2 / examples下。 您可以使用脚本lablgtk2从命令行查看它们,例如

lablgtk2 /opt/wodi32/doc/godi-lablgtk2/examples/editor.ml
lablgtk2 /opt/wodi32/doc/godi-lablgtk2/examples/text/text-demo.ml