在列表中查看外部图像(python中的Tkinter)

时间:2014-11-18 23:08:14

标签: python image user-interface tkinter

我试图学习Python并做一些测试应用程序。 现在我正在创建一种用于查看外部图像的图像查看器。但是有一些问题。 我已经成功地研究了如何查看图像。但我需要将其视为一个函数,因此可以更新图像。

这是我用来观看图片的原因:

from io import BytesIO
import urllib
import urllib.request
import tkinter as tk
from PIL import Image, ImageTk


imagelinks = []
***** Here is a crawler that provides image urls from a webpage into the above list ***


root = tk.Tk()

listvalue = 1
url = (imagelinks[listvalue])

with urllib.request.urlopen(url) as u:
    raw_data = u.read()
im = Image.open(BytesIO(raw_data))
image = ImageTk.PhotoImage(im)
label = tk.Label(image=image)
label.pack()
root.mainloop()

一切正常,列表中的图像1显示正常。 我遇到的问题是我想添加一个上一个和下一个按钮,它增加了listvalue- = 1和+ = 1的值,但只是这样做不会工作,因为它不会更新tkinter窗口中的图像。

在我的按钮功能中也尝试使用Tkinter的update(),但也没有太多帮助。

任何人都有关于如何让它发挥作用的一些意见?

更新: 试图将它放在这样的函数中。它将窗口调整到适当的大小,但不会显示图像。

from io import BytesIO
import urllib
import urllib.request
import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

link='http://img.khelnama.com/sites/default/files/previewimage/features/2013/Aug/IMG-     Reliance_logo(1).jpg'


def showimg(currentimg):
    url = currentimg
    with urllib.request.urlopen(url) as u:
        raw_data = u.read()
    im = Image.open(BytesIO(raw_data))
    image = ImageTk.PhotoImage(im)
    label = tk.Label(image=image)
    label.pack()

showimg(link)



root.mainloop()

1 个答案:

答案 0 :(得分:0)

您需要将代码检索并在定义中显示图像,并传递要用作参数的列表项。按下按钮,您可以递增或递减索引,并调用您自己的更新功能。

编辑:

试试这个

label = tk.Label()
label.pack()

def showimg(currentimg, label):
    url = currentimg
    with urllib.request.urlopen(url) as u:
        raw_data = u.read()
    im = Image.open(BytesIO(raw_data))
    image = ImageTk.PhotoImage(im)
    label.config(image = image)

showimg(link, label)