如何使用Lua制作GUI应用程序
首先,我会给你展示一个我在谈论什么的例子:GUI的例子
我已经学习 Lua 大约一周了,我很好奇我要如何做到这一点。基本上(就目前而言,为了学习目的),我只想做一个有两个按钮的 GUI,一个用于启动指定的 (.exe) 文件,一个用于退出 GUI。
这有可能吗?我该怎么做?任何信息都会很好!
原文链接 https://stackoverflow.com/questions/18056592
我想你可能希望看一下: http://lua-users.org/wiki/GraphicalUserInterfaceToolkits
如果你想要一个广为人知且经过测试的东西,我会选择Qt,如果想要轻量级的:FLTK。
如果你是一个完全的初学者,即你没有任何其他编程语言的编程经验,我建议你在不尝试混淆 GUI 编程时,非常好地学习 Lua,因为它本质上要难得多。
当你对 Lua 有了很好的理解后,可以选择一个适合 Lua 程序的 GUI 工具包。我使用 wxLua ,因此只能给你一些提示。
由于它不是一个“本地” Lua 工具包,而是一个“绑定”到一个众所周知的跨平台 GUI 库 (wxWidgets) ,你必须熟悉 wxLua 文档和 wxWidgets 手册(至少在某种程度上)。
wxLua 二进制发行版带有使用它所需的一切(你甚至不需要一个单独的 Lua 解释器,它有自己的解释器),并包含许多示例应用程序。
以下脚本是对你想要完成的事情的一个简单的近似,但是(我再次重申)你应该在尝试 GUI 编程之前真正学习 Lua 的基础知识。
local wx = require 'wx'
local PATH_TO_APPLICATION = [[notepad.exe]] -- 为了举例说明,假设在 Windows 中
local ans = wx.wxMessageBox( "Should the application be started?", "Hi there!",
wx.wxOK + wx.wxCANCEL + wx.wxICON_QUESTION )
if ans == wx.wxOK then
wx.wxExecute( PATH_TO_APPLICATION )
end
要运行前面的脚本,你必须确保 wxLua 已经正确安装在你的解释器搜索路径中。否则你必须使用 wxLua 发行版附带的 wxlua.exe
解释器。
另请注意,wxLua 解释器(最新的 wxLua 稳定版本)使用的是 Lua 5.1 版本,因此请不要在脚本中使用 Lua 5.2 版本的特性。基本的 Lua 语法和语义几乎相同,但有一些细微的差异,而 Lua 5.2 有一些新增功能。所以请注意你的学习路径。
IUP 在 Linux 上的安装难度
使用 Lua 创造一个 GUI 最简单的方法就是使用 IUP。然而,如果你尝试在 Linux 上安装 IUP,你会遇到困难。你必须希望有人预先安装了它,或者有人为你的 Linux 版本预先编写了安装包。如果你想让其他人能够后续运行你的代码,那么以合理的方式设置这些东西几乎是不可能的。这实际上是 Lua/Iup 团队的错误,因为使用 C 编程语言从 Iup 中获取数据并没有任何问题,并且它似乎与许多版本的 Linux 兼容。这与通常情况相反,通常情况下,很容易设置脚本语言,但很难设置像 C 这样的底层语言。
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你有没有检查过 wxLua ? 这是我所知道的 Lua 唯一的桌面 GUI 框架。