В моем примере используется Python 3.x, однако у вас не должно возникнуть проблем с изменением импорта для работы с Python 2.x.
При этом я бы лично использовал переменную отслеживания для отслеживания индекса нашего списка фотографий. При этом мы можем запустить все, что нам нужно для запуска из show_slides
метода. Основная проблема, которую вам нужно решить, это изменение размеров ваших изображений. Это можно сделать с помощью PIL
. Мы можем открыть изображение на основе текущего пути, а затем изменить его размер. Затем мы загружаем измененное изображение на этикетку. Мы также можем использовать os.path.basename()
, чтобы получить имя файла для наших заголовков. Тем не менее, в настоящее время при настройке вашей программы ни один заголовок не будет смещен на весь экран.
Посмотрите на приведенный ниже код и дайте мне знать, если у вас есть какие-либо вопросы.
from PIL import Image, ImageTk
import tkinter as tk
import os
class App(tk.Tk):
def __init__(self, image_files, delay):
tk.Tk.__init__(self)
self.w = self.winfo_screenwidth()
self.h = self.winfo_screenheight()
self.overrideredirect(1)
self.geometry("%dx%d+0+0" % (self.w, self.h))
self.delay = delay
self.pictures = []
self.track_img_ndex = 0
for img in image_files:
self.pictures.append(img)
self.picture_display = tk.Label(self)
self.picture_display.pack(expand=True, fill="both")
def show_slides(self):
if self.track_img_ndex < len(self.pictures):
x = self.pictures[self.track_img_ndex]
self.track_img_ndex +=1
original_image = Image.open(x)
resized = original_image.resize((self.w, self.h),Image.ANTIALIAS)
new_img = ImageTk.PhotoImage(resized)
self.picture_display.config(image=new_img)
self.picture_display.image = new_img
self.title(os.path.basename(x))
self.after(self.delay, self.show_slides)
else:
print("End of list!")
delay = 3500
image_files = ["/media/pi/RASPBERRY/object1.gif",
"/media/pi/RASPBERRY/object12ndImage.gif",
"/media/pi/RASPBERRY/object13rdImage.gif",
"/media/pi/RASPBERRY/object14thImage.gif"]
app = App(image_files, delay)
app.show_slides()
app.mainloop()