寻求Linux下Gforth的GUI开发基础教程(GTK/MINOS优先)
Gforth(Linux)GUI开发教程求助
我想在Linux平台学习Gforth的GUI开发,但找到的相关文档要么质量糟糕要么已经过时。
我试过以下方案都没解决问题:
- Reddit上《What is the best way to make lightweight GUIs in Forth?》里的多种方案,均无帮助
- FFL/GTK方案:FFL作者已停止维护,示例混乱、存在bug且不再兼容,根本没法用来学习
- Gforth自带的MINOS教程:完全算不上教程,只是一堆无法正常运行的示例(比如无法退出),相关文档也极度匮乏,没法用
目前我采用Tcl/Tk方案,通过shell调用Tk处理交互,但这个方案依赖系统调用,性能极差,不适合大型应用。当前实现代码如下:
\ Needs to have Tcl/Tk wish installed 0 value tk-in 0 value tk-out variable #clicks 0 #clicks ! : wish{ \ send command to wish tk-in to outfile-id ; : add-one 1 #clicks +! ; \ get an action as example here counting clicks : cleaning tk-in close-file tk-out close-file s\" rm /dev/shm/tk-in /dev/shm/tk-out \" system \ clear temporary files for a clean code cr 0 (bye) ; : }wish \ finish command to wish tk-in flush-file throw stdout to outfile-id ; : update-wish wish{ .\" .label configure -text \"clicks: \" #clicks @ . .\" \"\" cr }wish ; \ redraw window : counting begin tk-out key-file dup 'q' = if wish{ .\" exit\" }wish cleaning then \ quit wish dup '+' = if add-one update-wish then \ add one if '+' received #clicks @ 5 > if wish{ .\" exit\" }wish \ exit on 5 clicks cleaning then 4 = until ; : initiating s\" mkfifo /dev/shm/tk-in /dev/shm/tk-out\" system \ create temporary files here new version might use a memory block as file s\" wish </dev/shm/tk-in >/dev/shm/tk-out &\" system \ manage how they are used input/output to the external interpreter s\" /dev/shm/tk-in\" w/o open-file throw to tk-in \ only input has to be writable s\" /dev/shm/tk-out\" r/o open-file throw to tk-out \ so output is read only to get performances (how cares on modern PCs) wish{ .\" wm protocol . WM_DELETE_WINDOW { puts 'q' } \" cr .\" wm title . \"forth count\"\" cr .\" wm geometry . \"200x100+100+100\"\" cr .\" label .label -text \"There have been no clicks yet\" \" cr .\" button .click -text \"click me\" -command \" puts '+' \" \" cr .\" button .exit -text \"EXIT\" -command \" puts 'q' \" \" cr .\" pack .label .click .exit\" cr }wish \ TK window management ; : checkrunispossible s\" which wish 1> /dev/null\" system \ system Bash execute $? 0 > if \ if Tk wish tool is not installed quit cr 27 emit .\" [31;1m Tcl/Tk wish command must be installed.\" 27 emit .\" [0m\" cr 0 (bye) then ; : main checkrunispossible initiating counting cleaning ; main
我知道80年代后Forth就很少用于GUI开发,但我只想给自己的Gforth业余脚本添加GUI,且不考虑更换其他Forth解释器。请问有没有从基础应用(比如几个按钮)开始、文档完善的教程?优先考虑GTK或MINOS相关的。
内容的提问来源于stack exchange,提问作者francois P
相关产品推荐
相关产品推荐

