我是“Python世界”的新手,我正在(试图)为我的孩子们做一个照相亭。我买了一个picamera,并为它写了一个python脚本。
python脚本很简单(就像picam的例子一样):打开picamera,显示预览窗口,休眠5秒钟,然后拍照。
好吧..。到目前为止,没什么大不了的。
但是当我尝试将预览窗口放在tkinter窗口的前面时,不起作用!我知道将picamera预览图像放到tkinter帧是不可能的,但我们可以用预览窗口来伪造它。但每次我运行程序时,相机都会显示5秒钟,拍下照片,然后tkinter就会建立窗口。
我正在试用子进程,但没有任何变化,以下是代码(在相机文件中):
下面是代码: cam.py:
import picamera
from time import sleep
with picamera.PiCamera() as camera:
camera.preview_fullscreen=False
camera.preview_window=(620, 320, 640, 480)
camera.resolution=(640,480)
camera.start_preview()
camera.sharpness = 10
camera.contrast = 30
camera.vflip=False
camera.hflip=False
camera.exposure_mode = 'auto'
sleep(10)
#camera.stop_preview()
#camera.close()gui.py:
from Tkinter import *
import RPi.GPIO as GPIO
import Image
from PIL import Image, ImageTk
from subprocess import Popen, PIPE
class Tela(object):
def __init__(self,master, **kwargs):
self.master=master
pad=3
self.geom='200x200+0+0'
master.geometry("{0}x{1}+0+0".format(master.winfo_screenwidth()-pad,
master.winfo_screenheight()-pad))
def toggle_geom(self, event):
geom=self.master.winfo_geometry()
print(geom,self._geom)
self.master.geometry(self._geom)
self._geom=geom
win = Tk()
win.title("test")
app=Tela(win)
frame = Frame(win)
frame.pack()
proc=Popen(["python","cam.py"],stdout=PIPE)
output=proc.communicate()[0]
print output
win.mainloop()发布于 2016-02-02 16:54:06
丹尼尔!问题出在gui.py最后一行之前的那一行,因为当您使用通信()方法时,它会等待进程终止,所以要么是预览正在运行,要么是gui正在运行。
https://stackoverflow.com/questions/25609844
复制相似问题