2014-09-01 206 views
1

我是'Python世界'中的新人,我(試圖)爲我的孩子們製作相機。 我買了一個picamera併爲它寫了一個python腳本。用相機預覽的Pi相機預覽 - 樹莓派

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() 

回答

0

丹尼爾!問題出現在最後一行gui.py之前的行中,因爲當你使用方法communicat()時,它會等待進程終止,以便預覽正在運行或者gui正在運行。