Я пытаюсь использовать Tkinter для отображения изображения в Python 2.7.Ниже приведен пример кода, который я пытался использовать, который отображает все изображения в папке (от http://code.activestate.com/recipes/521918-pil-and-tkinter-to-display-images/):
import os, sys
import Tkinter
import Image, ImageTk
def button_click_exit_mainloop (event):
event.widget.quit() # this will cause mainloop to unblock.
root = Tkinter.Tk()
root.bind("<Button>", button_click_exit_mainloop)
root.geometry('+%d+%d' % (100,100))
dirlist = os.listdir('.')
old_label_image = None
for f in dirlist:
try:
image1 = Image.open(f)
root.geometry('%dx%d' % (image1.size[0],image1.size[1]))
tkpi = ImageTk.PhotoImage(image1)
label_image = Tkinter.Label(root, image=tkpi)
label_image.place(x=0,y=0,width=image1.size[0],height=image1.size[1])
root.title(f)
if old_label_image is not None:
old_label_image.destroy()
old_label_image = label_image
root.mainloop() # wait until user clicks the window
except Exception, e:
# This is used to skip anything not an image.
# Image.open will generate an exception if it cannot open a file.
# Warning, this will hide other errors as well.
pass
Например, крестик (вверху) приведет кследующее отображаемое изображение в окне Tkinter (внизу): ![enter image description here](https://i.stack.imgur.com/fUlRK.png)
Я пробовал другие коды (включая некоторые для отображения в реальном времени моей веб-камеры), все они приводят к одному и тому же результату: IМожно увидеть изображение, оно имеет правильный размер, но каждый столбец имеет постоянное значение в пикселях (один из соответствующего столбца первой строки исходного изображения).