通过Lua创建交互式GTK界面

3
我正在构建一个非常依赖插件的应用程序,这些插件使用Lua编写以便更易于快速开发。
现在,我想为插件配置添加GTK用户界面。目前的问题是,我需要一种通过外部代码与接口进行交互的方式(基本上是信号和回调)。我不确定如何仅使用外部Lua脚本实现该行为。
我的方法是否正确?或者我应该在我的框架中实现本地UI解决方案?
1个回答

3
如果你使用的是Linux或BSD系统,Lua是GTK的一个完美选择。只需要看一下lua-lgi项目即可。该项目安装完成后,你可以在几秒钟内开始构建用户界面:
lgi = require'lgi'
Gtk = lgi.require'Gtk'
dialog = Gtk.MessageDialog { text = 'This is a text message.', buttons = 'CLOSE' }
dialog:show_all()
Gtk.main()
lgi最大的特点在于它适用于每个基于GObject的库,例如cairogofficegnome-db等等。
如果你使用的是Windows系统,你就没那么幸运了。我构建了一个有效的安装程序,但这更像是一个概念验证而不是一个真正的项目。实现这一点的道路非常艰难,尤其是因为gobject-introspection(由lgi广泛使用)目前还不具备跨平台友好性。
我对其他操作系统没有经验。

我也查看了相关内容,但我的问题不是关于在Lua上构建UI,而是如何检索已加载的UI元素以便能够用脚本进行修改。这是否可能实现? - Ric Subtil
lua-lgi 提供了与 C 语言相同的 API:您可以像使用纯 GTK 一样进行任何操作。根据我从您的请求中所理解的,您可以轻松地从 GtkBuilder(即由 Glade 生成的 XML 文件)中获取小部件,并以任何可能的方式对其进行编辑。 - ntd
如果情况是这样的,那么这可能是实现我的目标的最佳方式。唯一的问题是跨平台问题,但我稍后会寻找解决方案。感谢您的帮助! - Ric Subtil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接