- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经看到了一些涉及OCaml中GUI编程的线程,但是当需要GUI界面时,我认为它们显然不会导致一个清晰的解决方案。
更具体地说,我的问题如下:在为OCaml软件编写GUI时,最有效(最容易上手)的方法是什么?有没有人接触过OCaml本身简单有效的GUI模块,或者找到了一种有效的语言或免费软件包可以用它来完成,并且可以与OCaml很好地通信/播放?
我已经在OCaml中编写了解释器,所以我的词法分析器,解析器,核心解释器函数等都是OCaml模块。当前,我有一个命令行解决方案(“ main.ml”),它允许用户通过在命令行中键入表达式并接收显示已解析和简化表达式的打印终端输出来与解释器进行交互。但是,命令行解决方案仅用于测试目的。我希望用户通过GUI进行交互,这可能很简单(Java框架是从无数世纪开始出现的),但是需要以某种方式与我编写的OCaml模块进行交互。到目前为止,我在OCaml中有一个库:http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual042.html。有人知道这是否有效和有用吗? (我想我已经对该库发表了负面评论)
如果我选择使用更优化的语言对GUI进行编程,则软件交互方式是:用合适的语言(可能是C ++,Python等)编写GUI,然后将OCaml书面解释器编译为可执行文件,然后以某种方式将GUI连接到可执行文件?
我对某些松散连接或奇怪的解决方案不感兴趣,这些解决方案是通过管道(我一直在考虑这些进程间的通信,例如操作系统设计方面的问题)或套接字(我倾向于在网络编程中考虑这些问题),想象如果没有OCaml本身,必须有某种方法可以将我的OCaml编码的解释器“容纳”在另一种语言的GUI代码中。有什么想法,指导或建议吗?
编辑:如果能获得类似Linux的操作系统(即Linux RedHat)的GUI,我会很高兴。如果可以在Windows上运行GUI,那将很棒,但是至少我的目标是Linux。
编辑2:刚发现这一点,有人对“ OCaml-Java”有想法吗? http://ocamljava.x9c.fr/听起来很有趣,它具有“ ...运行使用ocamlc编译过的Objective Caml源的能力;其次,可以将Objective Caml源编译为可执行jar文件的能力。”我担心的是,Java是获得快速但有用的GUI的最佳途径,这从未令我感到惊讶...
当前的解决方案:在检查了@Jeffrey Scofield在下面提供的解决方案帖子中的各种选项之后,我选择了目前对LablGtk进行更深入的研究(这将使我留在OCaml中)。对于那些看这篇文章的人来说,下一个有希望的选择是研究与C交互的外语,因为C和OCaml已经开始有联系。似乎存在在OCaml中调用C代码和在C中进行OCaml调用的方法(尽管这确实很困难,因为实际上最终您会使用稍微复杂的包装函数来包装OCaml函数调用,这些包装函数将更加特定于您从中调用的函数类型在OCaml中-> ie,您将必须处理C中每个OCaml函数及其参数的“映射”。请查看:http://www.mega-nerd.com/erikd/Blog/CodeHacking/Ocaml/calling_ocaml.html,以获取更多信息。鉴于我对Java GUI编程很满意,所以OCaml-Java最初似乎是一个好主意,但是两种语言之间的交互并不像C和OCaml那样直接,此外,有关此文档的文档似乎很苗条(并且使用OCaml -Java不是您刚接触并获得Java GUI东西的东西...)。 OCaml-JavaScript看起来很有趣,但是请记住,如果您选择此路径,那么除了一些JavaScript之外,您极有可能不得不花时间在良好的HTML 5编码设置上。
另外,SO中有几篇文章讨论管道和套接字,它们是创建GUI后端系统的有效方法。但是,如果您不介意程序系统/产品将“松散耦合”,那么这是个好主意。
一旦弄清LablGtk并确保它为我的OCaml后端代码提供可接受的GUI前端,我将更新此解决方案。
最佳答案
我认为LablGtk工具箱是相当最新的,并且目前正在维护。因此,这将是一种选择。但是,我自己没有使用过它。
将一组OCaml模块链接到用C,C ++或Objective C编写的主程序中并不是很困难。您可以或多或少地直接调用OCaml函数并获取结果。为此,您需要学习外来功能接口,一旦您精通该功能,就不会那么困难。然后,您可以使用C系列方面喜欢的任何GUI库。如果您对这种方法感兴趣,可以从OCaml手册的Chapter 19开始。
您可以使用C中介链接其他语言,具体取决于语言。对于一种解释语言,您可以将OCaml函数添加为新的原语。 (根据我的经验,口译员通常是用C或C ++编写的。)
对于Java,有OCaml-Java(如您所述)。我自己没有使用过,但是很有趣。我相信JVM会施加一些限制,因此您可能需要在编码时格外小心。
对于Web应用程序,有js-of-ocaml,可将OCaml编译为JavaScript。
关于user-interface - OCaml:GUI编程的有效途径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651539/
我有一个无 GUI 的服务器(没有任何桌面环境或 Ubuntu 服务器的新鲜 Debian,没有 X 服务器,先验)。 我考虑安装 docker 并拉取一个基于官方 Ubuntu 的容器,并在其上添加
我正在构建一个带有临时用户名系统的简单聊天服务器。当屏幕弹出时,首先会出现一个简单的屏幕,询问您的用户名。你可以放入任何你想要的东西,这纯粹是暂时的(我也在尝试)。代码告诉程序继续,将用户名保存到代码
我想将来自其他类的图像显示到 QLabel 中,但要通知 GUI 有一个新的框架可用。我需要从非 GUI 类和非 GUI 线程发出信号。 有什么办法吗? 最佳答案 signal 可以从任何继承QObj
我正在用 Java 编写一个图形用户界面,它有一些按钮,其中一个按钮是选项。我想要它,所以当您单击选项时,它会将 gui 更改为我的选项 gui,而不是在另一个窗口中打开它。 我该怎么做? 最佳答案
标题说明了一切...我和我的 friend 正在这样做,我们不知道为什么 Ball.java 实际上没有在 gamePanel 中制作球,然后制作 GUI。顺便说一句,这是 8 球台球。这是代码: 驱
我正在使用 GUI 构建器,我想知道是否有一种简单的方法可以通过当前主窗口打开寄存器窗口(引用下面的页面)。我正在尝试通过菜单栏来执行此操作。 我一整天都在尝试,因为 GUI Builder 生成了一
我有一个程序使用了许多隐藏的 GUI 组件。例如,所有菜单项和打印机对话框/组件(仅占用至少 50 毫秒)。总的来说,我猜整个程序启动的大约 300 毫秒(或 40%)要归功于所有隐藏的东西。 我想做
我对 GUI 构建比较陌生。 我想制作一个带有按钮(我已经有了)的 GUI,用户可以按下该按钮并选择一个图像,然后动态地将该图像加载到面板中的 GUI 中。我希望每次用户浏览图像时图像都动态变化。 到
我有两年使用 Java 和 Visual Studio 进行企业应用程序编程的经验,而且我是 Python 和 wxPython 的新手。所以我的问题是:wxPython 能否为我提供足够丰富的 GU
这是我启动 mkvtoolnix-gui 时遇到的错误: mkvtoolnix-gui: symbol lookup error: mkvtoolnix-gui: undefined symbol:
我在初始屏幕上有一些最近使用的存储库,我想删除它们,因为我不再使用它们了。如何删除它们? 操作系统 = Windows 7 我查看了注册表并搜索了 git 目录,但找不到最近使用列表的存储位置。 最佳
我正在尝试在 matlab、GUI 中用户输入点作为输入和它们之间的连接。 我有 5 个 matlab 文件 - screen1.m、screen2.m、screen3.m、screen4.m、glo
我用java制作了一个客户端/服务器程序,我已经按照我想要的方式使用cmd完美地工作了,现在我正在尝试将代码的客户端转换为GUI,但是我在打印时遇到问题客户端消息并从文本字段和服务器消息读取客户端输入
我正在制作一种 CRUD 应用程序(Java GUI,MYSQL)我应该: 将数据从数据库加载到List(例如),然后将List加载到GUI 将数据从数据库加载到对象(具有 SQL 表等属性)和对象到
我正在开发一个有 5 个图形用户界面窗口的 Java 应用程序,其中一个是问候窗口或主窗口,我已经完成了所有逻辑部分的工作,我已经完成了 99.99%,唯一剩下的就是我如何以这种方式编码,当我点击一个
我目前正在开发 GUI。 我选择将我的 GUI 基于 bluej 项目 - Scribble。 当您创建 ScribbleGUI 对象时,DrawDemo 类会创建一个同时自动打开的 Canvas 。
在这里阅读了很多关于多进程、管道等的内容后,我还没有找到答案,但如果它已经存在,我深表歉意。 我有一个外围硬件,我正在尝试为其创建一个 GUI。我想让 GUI 使用来自外围设备的数据不断更新,同时仍保
我想做的是将 GUI 从一个单独文件中的类链接到另一个类。我的第一个类是一个主菜单,它将显示一些链接到另一个窗口的按钮。第二个类显示不同的窗口,但我现在遇到的问题是我不知道如何链接第一个类中的按钮来调
我的 GUI 代码中有一个奇怪的行为。如果用户在短时间内产生大量事件,则可能会发生正在运行的事件处理程序方法被另一个事件处理程序方法中断。由于一切都在同一个线程(GUI 线程)中运行,所以一切都应该按
这是一个涉及风格的问题。我正在寻找可以帮助我解决常见 GUI 设计问题 的想法。该应用程序是在 Winforms 中完成的,宁愿使用 WPF,该应用程序已经完成,但我是一个完美主义者,在与其他人合作时
我是一名优秀的程序员,十分优秀!