在 tkinter 中延迟显示多个图像

Displaying Multiple image in tkinter with delay

我想一次显示一张图片这是我为两张图片编写的代码。但它不能像我想的那样工作。我希望在第一个广告完全完成后需要 10 秒的延迟,然后 运行 第二个广告。

def ad():
    global pop
    pop=Toplevel(root)
    pop.geometry('1600x900')
    global pic

    pic=PhotoImage(file='ad.png')

    label_pop = Label(pop, image=pic)
    label_pop.grid()

    pop.overrideredirect(1)
    pop.after(5000, lambda: pop.destroy())


    
    #ad 2
    global pop2
    pop2=Toplevel(root)
    pop2.geometry('1600x900')
    global pic2

    pic2=PhotoImage(file='j..png')

    label_pop2 = Label(pop2, image=pic2)
    label_pop2.grid()

    pop2.overrideredirect(1)
    pop2.after(5000, lambda: pop2.destroy())
    root.after(15000, ad)




root.after(5000,ad)
  1. 您需要为每个图像使用不同的文件名。
  2. 您可以使用时间模块,特别是 time.delay() 延迟。

使用 itertools.cycle() 创建要显示的图像的循环列表,然后您可以使用 next() 获得 下一张图像

下面是一个例子:

...
from itertools import cycle

...

# a cycle list of images you want to show
imagelist = cycle(['ad1.png', 'ad2.png', ...])

def ad():
    pop = Toplevel(root)
    pop.geometry('1600x900')
    pop.overrideredirect(1)

    pic = PhotoImage(file=next(imagelist)) # get next image using next()

    label_pop = Label(pop, image=pic)
    label_pop.grid()
    label_pop.image = pic  # save reference of image to avoid garbage collection

    root.after(5000, pop.destroy)
    root.after(15000, ad)

root.after(5000, ad)
...