首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Tkinter Telescope:生成持续更新的图像预览

Python Tkinter Telescope:生成持续更新的图像预览
EN

Stack Overflow用户
提问于 2018-01-07 05:21:42
回答 1查看 438关注 0票数 1

我还在学习Python-3代码。

我的目标是拍摄Pi相机“预览”或image.jpg,并不断更新Tkinter GUI框架上的图片。因此,在您提交保存来自Telescope的jpg之前,您可以看到图像的样子。

下面的代码找不到与'image.jpg‘位于同一文件夹位置的简单文件。同样的问题是,这将结束一个静态的旧图像。有没有办法让这部分代码在循环中运行?

Pi相机本身可以拍摄一张新图像,并在/home/pi处创建一个jpg文件。主程序也位于/home/pi。每次我运行程序时,它都会在Try下打印出"Image not found“。

代码语言:javascript
复制
from Tkinter import *
import picamera

root = Tk() #makes the window
camera = picamera.PiCamera()
root.wm_title("Camera GUI Program") #Makes the title that will appear in the top left
root.config(background = "#FFFFFF") #Sets background color to white

def redCircle():
    circleCanvas.create_oval(20,20,80,80,width = 0, fill='red')
    colorLog.insert(0.0, "Red\n")

def yelCircle():
    circleCanvas.create_oval(20, 20, 80, 80, width=0, fill='green')
    colorLog.insert(0.0, "Green\n")


#Left Frame and its contents
leftFrame = Frame(root, width=200, height = 600)
leftFrame.grid(row=0, column=0, padx=10, pady=2)

Label(leftFrame, text="Instructions:").grid(row=0, column=0, padx=10, pady=2)

Instruct = Label(leftFrame, text="1\n2\n2\n3\n4\n5\n6\n7\n8\n9\n")
Instruct.grid(row=1, column=0, padx=10, pady=2)

try:
    camera.capture('image.jpg')
    imageEx = PhotoImage(file = 'image.jpg')
    Label(leftFrame, image=imageEx).grid(row=2, column=0, padx=10, pady=2)
except:
    print("Image not found")

#Right Frame and its contents
rightFrame = Frame(root, width=200, height = 600)
rightFrame.grid(row=0, column=1, padx=10, pady=2)

circleCanvas = Canvas(rightFrame, width=100, height=100, bg='white')
circleCanvas.grid(row=0, column=0, padx=10, pady=2)

btnFrame = Frame(rightFrame, width=200, height = 200)
btnFrame.grid(row=1, column=0, padx=10, pady=2)

colorLog = Text(rightFrame, width = 30, height = 10, takefocus=0)
colorLog.grid(row=2, column=0, padx=10, pady=2)

redBtn = Button(btnFrame, text="Red", command=redCircle)
redBtn.grid(row=0, column=0, padx=10, pady=2)

yellowBtn = Button(btnFrame, text="Yellow", command=yelCircle)
yellowBtn.grid(row=0, column=1, padx=10, pady=2)

greenBtn = Button(btnFrame, text="Green", command=grnCircle)
greenBtn.grid(row=0, column=2, padx=10, pady=2)

root.mainloop() #start monitoring and updating the GUI. Nothing below here runs.
EN

回答 1

Stack Overflow用户

发布于 2018-01-07 06:39:44

是否确定因为找不到该文件而引发错误?在try下有3个可能触发异常的语句。您需要找出是哪一个导致了错误。对于路径,请尝试使用完整路径。

至于循环。通常,创建一个函数,然后使用after命令在事件循环上重复调度它自己。

代码语言:javascript
复制
pwd = os.getcwd()
imageEx = PhotoImage(file=pwd + '/image.jpg')
label_image = Label(leftframe, image=imageEx)
label_image.grid(row=2, column=0, padx=10, pady=2)
label_image.image = imageEx

def picapture():
    global label_image, root, pwd
    try:
        camera.capture('image.jpg')
        imageEx = PhotoImage(file=pwd + '/image.jpg')
        # Only update the image displayed by the label.
        label_image.image = imageEx
        # Schedule picature function to run every 1000 milliseconds
        root.after(1000, picapture)
    except:
        print("Image not found")

...
picapture()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48132024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档