如何在 lua 中中断 io.read(),它充当 "wait" 函数
How to interrupt io.read() in lua, which acts as "wait" function
我正在用Lua和Qt编写一个用户界面,有一个在图片上画一个矩形的过程,用于后面的过程。目前我使用 io.read() 等待用户设置矩形,然后用户按 "CTRL + D" 继续程序。我想知道我是否可以通过代码中断io.read(),这样一旦用户设置了矩形,程序就会自动运行。
更具体地说,这是我将要执行的操作的示例。
function ui_select(x, y)
if x1 == -1 then -- First point of rectangle
x1 = x
y1 = y
else -- Second point of rectangle
x2 = x
y2 = y
io.write(1)
end
end
qt.connect(qt.QtLuaListener(ui.frame_2.canvas), 'sigMousePress(int, int, QByteArray, QByteArray, QByteArray)', ui_select)
x1 = -1
y1 = -1
x2 = 0
y2 = 0
ui.frame_2.can_label.text = 'Draw a rectangle around the object you want to track, finish with "<CTRL> + D"'
io.read()
-- Do something
不知是否可以中断ui_select函数中的io.read(),这样一旦用户绘制矩形,它就会自动开始处理。
不能直接把处理代码放到ui_select函数里,把io.read()去掉,因为这是子程序,一旦没有io.read()等待用户操作,从头到尾运行什么都不做,直接回到主程序。
您无法 "interrupt" io.read()
运行。您需要想出一个不同的机制来等待输入。例如,您可以有一个循环,其中进程 "sleeps" 持续 250 毫秒左右,然后检查您感兴趣的条件。这样您就可以始终 "break" 循环并具有各种条件为您服务。
我正在用Lua和Qt编写一个用户界面,有一个在图片上画一个矩形的过程,用于后面的过程。目前我使用 io.read() 等待用户设置矩形,然后用户按 "CTRL + D" 继续程序。我想知道我是否可以通过代码中断io.read(),这样一旦用户设置了矩形,程序就会自动运行。 更具体地说,这是我将要执行的操作的示例。
function ui_select(x, y)
if x1 == -1 then -- First point of rectangle
x1 = x
y1 = y
else -- Second point of rectangle
x2 = x
y2 = y
io.write(1)
end
end
qt.connect(qt.QtLuaListener(ui.frame_2.canvas), 'sigMousePress(int, int, QByteArray, QByteArray, QByteArray)', ui_select)
x1 = -1
y1 = -1
x2 = 0
y2 = 0
ui.frame_2.can_label.text = 'Draw a rectangle around the object you want to track, finish with "<CTRL> + D"'
io.read()
-- Do something
不知是否可以中断ui_select函数中的io.read(),这样一旦用户绘制矩形,它就会自动开始处理。
不能直接把处理代码放到ui_select函数里,把io.read()去掉,因为这是子程序,一旦没有io.read()等待用户操作,从头到尾运行什么都不做,直接回到主程序。
您无法 "interrupt" io.read()
运行。您需要想出一个不同的机制来等待输入。例如,您可以有一个循环,其中进程 "sleeps" 持续 250 毫秒左右,然后检查您感兴趣的条件。这样您就可以始终 "break" 循环并具有各种条件为您服务。