我正在 python(Tkinter) 制作一个程序,不知怎的,我陷入了困惑之中。 我想暂停我的程序执行几秒钟,并且执行暂停但不是在正确的时间。 我的程序看起来像这样:
from Tkinter import *
from time import *
root=Tk()
def login():
g=str(ent.get())
h=str(ent2.get())
if h=='shubhank' and g=='shubhankt1':
root2=Tk()
root2.title("Shubhank Tyagi")
root2.geometry('300x300')
root2.wm_iconbitmap('st.ico')
name=Label(root2, text='''Name: Shubhank Tyagi
Age: 18 yrs
Sex: Male
Occupation: Student
Designation: Intermediate''')
name.pack()
elif h=='divyansh' and g=='divyansht5':
root2=Tk()
root2.title("Divyansh Tyagi")
root2.geometry('300x300')
root2.wm_iconbitmap('st.ico')
name=Label(root2, text='''Name: Divyansh Tyagi
Age: 18 yrs
Sex: Male
Occupation: Student
Designation: Intermediate''')
name.pack()
else:
error=Label(root, text='Please provide correct info.')
error.pack()
sleep(5)
error.pack_forget()
w=Label(root, text="Username", bg='Light Blue')
ent=Entry(root)
w2=Label(root, text="Password", bg='Light Blue')
ent2=Entry(root)
ent2.config(show=' ')
btn=Button(root, text='Click Me!', command=login)
此按钮( btn )调用已定义的函数。 我想要的是第一个错误信息打印..并在一段时间后它被删除..问题发生在点击按钮后,程序暂停直接 error.pack_forget() 函数被执行..并且永远不会打印错误消息...
请帮帮我!
(如果需要,我也可以提供实际的韵律文件)
答案 0 :(得分:1)
您的计划存在一些与您的主要问题无关的基本问题,但这使得难以撰写正确答案:
Tk
的实例。 sleep
。 mainloop
,这是正常运作所必需的。 你的问题的标题询问如何暂停GUI,但GUI不应该"暂停"本身。当GUI没有主动做任何事情时,它仍然需要监听事件,因为它不断地获取诸如请求重绘部分事件之类的事件等。
问题的正文询问如何在几秒钟后隐藏标签,并提到你最初是如何看不到信息的。您永远不会看到它的原因是GUI从未有机会响应重绘事件,因为您调用了sleep
。
您可以使用名为after
的通用窗口小部件方法在将来隐藏消息,该方法允许您在将来的某个时间运行某个功能。例如:
def login():
...
error = Label(...)
error.pack(...)
error.after(5000, error.pack_forget)
...