2013-04-29 138 views
2

我想弄清楚如何實例化圖形小部件內的多行文本框。 LablGTK2在文檔方面似乎相當有限,而且對於看起來像我想要的東西,API很少。OCaml + LablGTK2:多行文本框

我已經開始交叉引用原始GTK2文檔https://developer.gnome.org/gtk3/stable/gtkobjects.html與Lablgtk2文檔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 & Lablgtk/lablgtk2設置多行文字?或者更好的教程建議,以顯示開發多行文本框(這是任何基於GUI的程序中非常重要的功能)?理想情況下,我想將輸入到這個多行文本中的文本連接到我編寫的將處理該文本的OCaml模塊,然後GUI會在GUI上顯示處理結果。任何幫助將不勝感激。

回答

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 
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() 
+0

這是甜的,正是我一直在尋找對於! – 9codeMan9 2013-05-01 00:20:23

+0

另外,你知道我怎麼可以嵌套這個多行文本框?我想在上面顯示一個文件菜單欄並在下面顯示幾個按鈕,但是當我嘗試在系統中放置多行代碼時,出現以下錯誤: (myprog.exe:9460):Gtk-WARNING * *:嘗試將類型爲GtkScrolledWindow的窗口小部件添加到GtkWindow,但作爲GtkBin子類,GtkWindow一次只能包含一個窗口小部件;它已經包含一個類型爲GtkVBox的小部件。 – 9codeMan9 2013-05-03 04:10:39

+0

@ 9codeMan9:GtkWindow只能容納單個小部件(如上例);如果你有更多的話,那麼你應該將滾動窗口放入適當的容器,即盒子(最有可能是你盒子裏的盒子)或表格(用於更復雜的佈局)。請參閱http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/c383.html以獲取打包小部件。 – 2013-05-03 06:12:22