python - 如何使用 tkinter gui 转到幻灯片中的下一张图片

python - how to go to next image in slideshow using tkinter gui

我正在尝试制作照片幻灯片程序。它不工作,因为我想使用 self.counter 变量转到列表中的下一张照片,但是 self.counter 的值返回到 0,因为它忘记了我更改值的事实.我不认为我可以使用配置,因为转到下一张图片的按钮也不起作用。

希望你能帮上忙 :) 非常感谢。

from tkinter import *

class SlideShowGUI:

    def __init__(self, parent, counter = 0):
        
        self.counter = counter
        
        self.images_list = ["smiley.png", "carrot.png", "bunny.jpg"]
        self.photo = PhotoImage(file = self.images_list[self.counter])

        self.b1 = Button(parent, text = "", image = self.photo, bg = "white")
        self.b1.grid(row = 0, column = 0)
        
        back = Button(parent, width = 2, anchor = W, text = "<", relief = RIDGE, command = self.previous_image)
        back.grid(row = 1, column = 0)
        
        forward = Button(parent, width = 2, anchor = E, text = ">", relief = RIDGE, command = self.next_image)
        forward.grid(row = 1, column = 1)

    def previous_image(self):
        self.counter -= 1
        self.photo.configure(file = self.images_list[self.counter])        

    def next_image(self):
        self.counter += 1
        self.photo.configure(file = self.images_list[self.counter])  

#main routine

if __name__ == "__main__":
    root = Tk()
    root.title("hello")
    slides = SlideShowGUI(root)
    root.mainloop()

抱歉,如果没有获取图像,它将无法工作!

如果我点击下一步按钮两次会出现错误消息

改用这个:

def previous_image(self):
        self.counter -= 1
        self.photo.configure(file = images_list[self.counter])        

    def next_image(self):
        self.counter += 1
        self.photo.configure(file = images_list[self.counter])

除了你必须注意 List Out Of Index 错误

另外,您为什么要使用 global images_list?似乎没有意义。如果您想在 class 中重用该列表,您可以将其命名为 self.images_list = [your, items].

您得到的错误: