Tkinter使用widget.after(30000,lambda:showFirstScreen()

2024-09-30 10:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有大量按钮/小部件的GUI。我想,如果30秒过去了,用户没有在GUI上点击任何东西,它将自动返回到第一个屏幕

我在root=Tk()和root.mainloop()之间添加了这个

root.after(30000, lambda: showFirstScreen())

这一行将在30秒后进入我的第一个屏幕,即使你点击屏幕。因此,没有计数器在按下按钮/小部件后重置

我尝试将其添加到其他窗口上的特定按钮,以便:

button13.after(30000, lambda: showFirstScreen()) 

如果我用按钮到达页面,它将在30秒后移到主窗口。但如果我回到按钮,它不会重复上面的动作

知道我做错了什么吗


Tags: lambda用户屏幕部件计数器guiroot页面
1条回答
网友
1楼 · 发布于 2024-09-30 10:31:26

您可以使用一个变量来检查用户是否与小部件交互,比如

def showFirstScreen(buttons_pressed):
    if buttons_pressed==True:
        ...code to go to first screen...

在所有按钮的调用方法中使用buttons_pressed变量来检查用户是否使用了任何按钮

如果要将after()添加到另一个窗口上的按钮,可以使用单独的函数

button13_onPress():
    if buttons_pressed==True:
        root.after(30000, lambda: showFirstScreen())

相关问题 更多 >

    热门问题