首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python即使在将睡眠()替换为root.after()之后也会冻结。

Python即使在将睡眠()替换为root.after()之后也会冻结。
EN

Stack Overflow用户
提问于 2017-09-15 15:50:46
回答 1查看 302关注 0票数 0

在用Python运行基于tkinter的程序4-5秒后,它会冻结。在我的程序中,我没有使用任何睡眠()语句。请看下面的代码。

代码语言:javascript
复制
    def sleeper(tim):
        print("sleep Timer")
        tex.update_idletasks()

    def countdown():#countdown logic
        global key
        global t
        global timeformatToBePub
        timeformat=""

        if (key==0):
            mins, secs = divmod(t, 60)
            timeformat = '{:02d}{:02d}'.format(mins, secs)
            timeformatToBePub = '{:02d}:{:02d}'.format(mins, secs)
            print(timeformat, end='\n')
            ###sevenSeg(list(timeformat))#pass list of time characters as argument
            top.after(1000,sleeper(1))
            #tex.update_idletasks()
            #top.update_idletasks()
            t -= 1

            tex.delete('1.0',tk.END)
            #top.after(1000,sleeper(1))
            tex.insert(tk.END,"Self destruction mode                 activated\n"+timeformatToBePub+"\n")
        if ((key==0) and(timeformat=="0001")):
            tex.delete('1.0',tk.END)
            top.after(1000,sleeper(1))
            tex.insert(tk.END,"At least you tried...\n Game over!\n Type         restart to restart the game")
            PlaySound(1)
            publish("dev1",        ("dev1,"+answers_list[0]+","+answers_list[1])+","+timeformatToBePub)
            top.after(1000,sleeper(1))
            restarter()#restarts the program
        top.after(2000,countdown())

几秒钟后程序没有响应的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 15:58:34

可能还有其他问题,但一个突出的问题是您滥用了after。之后需要一个可调用的。

考虑这一行代码:

代码语言:javascript
复制
top.after(1000,sleeper(1))

它在功能上与此相同:

代码语言:javascript
复制
sleeper(1)
top.after(1000, None)

..。它在功能上也与此相同:

代码语言:javascript
复制
sleeper(1)
sleep(1)

要正确使用after,必须传递对函数的引用。可以通过在对after的调用中包含这些参数来传递其他参数。例如:

代码语言:javascript
复制
top.after(1000, sleeper, 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46243388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档