How to expose a V function to Tcl? - 4a594c/tcl GitHub Wiki
To expose a function to Tcl, we need to use Tcl_CreateObjCommand
.
Example
import tcl
import tk
fn greet(client_data voidptr, interp &C.Tcl_Interp, objc int, objv &&C.Tcl_Obj) int {
tcl.set_obj_result(interp, tcl.new_string_obj('Hello World!', -1))
return C.TCL_OK
}
fn main() {
interp := tcl.create_interp()
tcl.init(interp)
tk.init(interp)
tcl.create_obj_command(interp, 'greet', greet, unsafe { nil }, unsafe { nil })
if tcl.eval(interp, 'wm title . hello; pack [button .h -text "Hello, World!" -command {puts [greet]}]') == C.TCL_ERROR {
panic(tcl.get_string_result(interp))
}
tk.main_loop()
tcl.delete_interp(interp)
}