关于在Lua中使用IUP.Text:action
2018-1-17 5:1:1
收藏:0
阅读:77
评论:1
朋友们。
在附加文件中,我展示了一个使用IUP GUI的Lua语言表单的示例。
现在的需求是在第一个文本框中每按下一个键都进行一些计算,结果必须显示在第二个文本框中。
我发现的问题是答案出现较晚...这意味着...
按下一个数字键...但是结果没有显示出来。
按下第二个数字键...显示的结果好像只有第一个数字在第一个文本框中。
按下第三个数字键...显示的结果好像只有前两个数字在第一个文本框中。
依此类推。
你能告诉我代码的不一致之处吗?
我的目标是开发7GUIs提出的七个GUI: https://github.com/eugenkiss/7guis
但我需要解决一些像这样的问题。
谢谢,朋友们。
HERNAN.
---------------------------------
-- Temperatura.lua
-- Hernán Cano Martínez
-- Ene-2018
---------------------------------
package.cpath = "?.dll;?53.dll;lua533/?.dll;lua533/?53.dll;" -- [在Windows中]
require ( "iuplua" )
-- iup.key_open() -- 自IUP 3.0 RC 3以来已经过时且不再必要。
-- ***************************************************************************
-- 我们将在表格中使用的控件
txtC = iup.text { value="0" , expand='NO', floating='NO', rastersize = "70" , cx="030", cy= "30", font ="Courier New, 10", NC='10', ACTIVE='YES', ALIGNMENT='ACENTER' }
lblC = iup.label { title = "摄氏度 =", expand='NO', floating='NO', rastersize = "85x25", cx="110", cy= "27", font ="Courier New, 10" } -- 尺寸以像素为单位
txtF = iup.text { value="0" , expand='NO', floating='NO', rastersize = "70" , cx="200", cy= "30", font ="Courier New, 10", NC='10', ACTIVE='YES', ALIGNMENT='ACENTER' }
lblF = iup.label { title = "华氏度", expand='NO', floating='NO', rastersize = "85x25", cx="280", cy= "27", font ="Courier New, 10" } -- 尺寸以像素为单位
btnC = iup.button { title = "关闭" , expand='NO', floating='NO', rastersize = "75x25", cx="200", cy="100", font ="Segoe IU, 9", TIP='点击以关闭' }
-- ***************************************************************************
-- 控件容器
vArea = iup.cbox{ expand='NO', floating='NO', size = "450x200",
txtC, lblC, txtF, lblF, --btnC,
nil
}
-- 表单
frmTemperatura = iup.dialog{ expand='NO', floating='NO',
vArea,
title = "温度",
size = "300x100"
}
-- ********************************** 回调 *************************************
function btnC:action()
-- 退出主循环
return iup.CLOSE
end
function txtC:action(t)
if txtC.value and tonumber(txtC.value) then
local nNum = 0
nNum = tonumber(txtC.value)
txtF.value = nNum * (9/5) + 32
end
-- return iup.CONTINUE -- HCM: 我不确定
end
function txtF:action(t)
if txtF.value and tonumber(txtF.value) then
local nNum = 0
nNum = tonumber(txtF.value)
txtC.value = nNum * (9/5) + 32
end
-- return iup.CONTINUE -- HCM: 我不确定
end
--------------------------------------------
-- 现在:显示表单
frmTemperatura:showxy(iup.CENTER,iup.CENTER)
-- 为了能够在其他上下文中运行此脚本
-- if (iup.MainLoopLevel()==0) then
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
iup.MainLoop()
end
----------------------------------------------
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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 代码?

动作回调函数是在值修改期间被调用的,所以如果在回调函数中查询属性,它将返回旧的值。新值将作为回调函数的参数传递。所以你应该更改你的代码为:
function txtC:action(c, new_value) if new_value and tonumber(new_value) then local nNum = tonumber(new_value) txtF.value = nNum * (9/5) + 32 end end function txtF:action(c, new_value) if new_value and tonumber(new_value) then local nNum = tonumber(new_value) txtC.value = (nNum - 32) * (5/9) end end