Raspberry Pi - 预览运行时如何做其他事情?
问题描述:
我目前正在编写一个脚本来创建一个GUI(用Tkinter编写)来完成一堆事情。其中之一就是可以开始使用相机进行预览,然后可以随意向前和向后移动该电机。不幸的是,预览阻止了我在GUI上执行其他任何操作,有没有办法解决它?在我理想的世界中,您可以按下GUI按钮,在后台运行预览的同时向前和向后移动电机,并为您提供主动反馈。这里是我的一些代码:Raspberry Pi - 预览运行时如何做其他事情?
def motorOut():
backwards(int(delayf)/1000.0, int(stepsf))
setStep(0,0,0,0)
def motorIn():
forward(int(delayb)/1000.0, int(stepsb))
setStep(0,0,0,0)
def cameraPreview():
camera.start_preview(fullscreen=False, window = (400, 240, 400, 240))
sleep(20)
camera.stop_preview()
感谢您的帮助!
答
这很可能不是阻止您的程序的预览,而是使用sleep(20)
。
虽然'睡眠'正在发生,但没有别的办法可以处理。这会导致你正在注意的块。您可以通过删除该行来修复此问题,而将camera.stop_preview()
绑定到事件(如按键)。这可能是这样的:
root.bind("<space>", lambda e: camera.stop_preview())
哪里root
是你定义为你的访问Tk()
。 lambda e:
指定一个内联函数表达式,其中e
是传递的事件对象。
它的工作原理!大多数情况下...我把代码放在睡眠中,而现在它可以让我点击其他按钮,但现在我无法退出预览。这不是一个大问题,因为它只是我屏幕右下方的一个小方块,但是如何将root定义为我对Tk()的访问来解决这个问题?对于我是初学者程序员的问题抱歉。 – NeonCop
使用Tkinter时,在程序的开始几乎所有的时候都要定义'root = Tk()'来引用各种Tk函数/方法,比如'bind'。很高兴这有助于! – SneakyTurtle
啊,当然!我称之为胜利,所以我用胜利取代了根,并且它像魅力一样工作。非常感谢你! – NeonCop