Python 在固定时间后在Tkinter中更改页面
有没有办法根据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
例如:
我有3页(
page1
,page2
,page3
)。我需要:
有可能吗?
谢谢你的帮助,我想到了一个解决办法,可以解决一些问题
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:我不明白你的问题。没有什么能阻止你那样做。您可以在
之后使用,来计划将来要调用的任何函数。