Python 在固定时间后在Tkinter中更改页面

Python 在固定时间后在Tkinter中更改页面,python,tkinter,Python,Tkinter,有没有办法根据Tkinter中的固定时间自动更改页面? 例如: 我有3页(page1,page2,page3)。我需要: 显示第1页5秒钟 显示第2页至,持续5秒 显示第3至页5秒钟 然后再翻到第1页… 有可能吗? 谢谢你的帮助,我想到了一个解决办法,可以解决一些问题 pygame是第三方Python模块 pygame.time.delay可能对您有所帮助 暂停程序一段时间-Python的帮助实用程序 例如,pygame.time.delay(5000)将延迟5000毫秒,相当于5秒 所以,把p

有没有办法根据Tkinter中的固定时间自动更改页面?
例如:
我有3页(
page1
page2
page3
)。我需要:

  • 显示第1页5秒钟
  • 显示第2页至,持续5秒
  • 显示第3至页5秒钟
  • 然后再翻到第1页…
    有可能吗?

    谢谢你的帮助,我想到了一个解决办法,可以解决一些问题

    pygame
    是第三方Python模块

    pygame.time.delay
    可能对您有所帮助

    暂停程序一段时间-Python的帮助实用程序

    例如,
    pygame.time.delay(5000)
    将延迟5000毫秒,相当于5秒

    所以,把
    page1
    page2
    page3
    作为一个标签,用三种不同的颜色,我想出了它

    import tkinter as tk#Python 2:import tkinter as tk
    导入pygame
    def更改颜色(小部件):
    pygame.时间延迟(5000)
    如果小部件['bg']=='Red':
    widget.config(bg='Blue')
    elif小部件['bg']=='Blue':
    widget.config(bg='Green')
    其他:
    widget.config(bg='Red')
    root=tk.tk()
    label=tk.label(根,背景为红色,高度为1000,宽度为1000)
    label.pack()
    label.bind(“”,lambda事件:更改颜色(label))
    root.mainloop()
    
    但是有一个缺陷

    • 指针的移动完成了绑定。如果指针处于空闲状态,则颜色不会改变
    也许有人来完全解决了你的问题:)


    改进:Bryan Oakley

    所有tkinter小部件在之后都有一个名为
    的方法,可以配置为将来调用函数。它需要一个表示毫秒的参数、一个要调用的函数以及传递给函数的参数

    假设您有一个名为
    root
    的根窗口,并且假设您有一个名为
    show\u page
    的函数,该函数带有一个参数,则可以为每个页面安排一次页面切换,如下所示:

    root.after(5000, show_page, page1)
    root.after(10000, show_page, page2)
    root.after(15000, show_page, page3)
    
    如果需要一个连续循环,可以创建一个在列表上迭代的函数。使连续迭代列表变得容易

    由于您没有提供[mcve],下面是一个完全有效的示例,它使用标签模拟页面,并使用
    itertools.cycle
    每五秒钟连续循环一次页面

    import tkinter as tk
    import itertools
    
    def show_page(page):
        label.configure(text=page)
    
    def cycle_page(pages):
        page = next(pages)
        show_page(page)
        root.after(5000, cycle_page, pages)
    
    root = tk.Tk()
    label = tk.Label(root, text="", width=20)
    label.pack(padx=20, pady=20)
    
    pages = itertools.cycle(["page1", "page2", "page3"])
    cycle_page(pages)
    
    root.mainloop()
    

    查看tkinter
    。调用
    时间的
    方法之后。睡眠(5)
    将冻结整个gui,并且几乎不应与gui的其余部分在同一线程中使用。当应用程序处于睡眠状态时,用户将根本无法与之交互。@BryanOakley你说得对。我不知道这对我是怎么起作用的。我通常更喜欢
    导入pygame;pygame.time.delay(5000)
    。毕竟,这是我最初的解决方案。例如,谢谢。如果我有一个带有标签、画布等的3页页面,我想自动更改它怎么办?@user3162643:我不明白你的问题。没有什么能阻止你那样做。您可以在
    之后使用
    ,来计划将来要调用的任何函数。