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是传递的事件对象。

+0

它的工作原理!大多数情况下...我把代码放在睡眠中,而现在它可以让我点击其他按钮,但现在我无法退出预览。这不是一个大问题,因为它只是我屏幕右下方的一个小方块,但是如何将root定义为我对Tk()的访问来解决这个问题?对于我是初学者程序员的问题抱歉。 – NeonCop

+0

使用Tkinter时,在程序的开始几乎所有的时候都要定义'root = Tk()'来引用各种Tk函数/方法,比如'bind'。很高兴这有助于! – SneakyTurtle

+0

啊,当然!我称之为胜利,所以我用胜利取代了根,并且它像魅力一样工作。非常感谢你! – NeonCop