我正在构建一个应用程序来连续显示从 IP 摄像机获取的图像。我已经弄清楚如何获取图像,以及如何使用 Tkinter 显示图像。但我无法让它不断刷新图像。使用 Python 2.7+。
这是我到目前为止的代码。
import urllib2, base64
from PIL import Image,ImageTk
import StringIO
import Tkinter
URL = 'http://myurl.cgi'
USERNAME = 'myusername'
PASSWORD = 'mypassword'
def fetch_image(url,username,password):
# this code works fine
request = urllib2.Request(url)
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
imgresp = result.read()
img = Image.open(StringIO.StringIO(imgresp))
return img
root = Tkinter.Tk()
img = fetch_image(URL,USERNAME,PASSWORD)
tkimg = ImageTk.PhotoImage(img)
Tkinter.Label(root,image=tkimg).pack()
root.mainloop()
我应该如何编辑代码以便fetch_image
重复调用并在 Tkinter 窗口中更新其输出?
请注意,我没有使用任何按钮事件来触发图像刷新,而是应该自动刷新,例如每 1 秒。