【发布时间】:2014-09-01 16:25:55
【问题描述】:
我是“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()
【问题讨论】:
标签: python user-interface python-3.x camera subprocess