鱼C论坛

 找回密码
 立即注册
查看: 4488|回复: 5

如何解决tkinter界面卡死问题?

[复制链接]
发表于 2017-7-6 18:34:57 | 显示全部楼层 |阅读模式
20鱼币
如题,执行这么一段代码:
  1. from tkinter import *
  2. import time
  3. root = Tk()
  4. var = StringVar()
  5. label = Label(root, textvariable=var)
  6. def start():
  7.     for i in range(5):
  8.         var.set("%d秒" % (5 - i))
  9.         time.sleep(1)
  10. button = Button(root, text='开始倒计时', command=start)
  11. button.pack()
  12. label.pack()
  13. mainloop()
复制代码

我想要的效果是,label的文本每1秒改变一次,起到倒计时的效果,然而实际情况却是点了按钮以后程序就卡死在那里,直到5秒钟以后才显示“一秒”,那么能不能不让窗口卡死呢?
我记得VB里面有一个doevents方法,可以转让控制权,不知python里面有没有类似的方法?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-6 19:36:36 | 显示全部楼层
如果楼主去学PyQt的话,有一个计时器的控件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-6 20:14:16 | 显示全部楼层
~风介~ 发表于 2017-7-6 19:36
如果楼主去学PyQt的话,有一个计时器的控件。

额....计时器只是举一个例子,我真实的意思是怎么解决这一类问题,比如你做个批量处理文件的程序,要搞个进度条,在按钮按下的函数里面修改进度条的值,但主窗口一直卡死在那边,进度条的值不会改变,这不是很尴尬么...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-6 22:17:47 | 显示全部楼层
楼主可以去搜索一下看tk有没有这个空间,要定时刷新主线程是有难度的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-7 13:06:25 | 显示全部楼层
tk 弹窗 + 延时关闭,一个更健壮的示范~
http://bbs.fishc.com/thread-74397-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-7 15:01:30 | 显示全部楼层
SixPy 发表于 2017-7-7 13:06
tk 弹窗 + 延时关闭,一个更健壮的示范~
http://bbs.fishc.com/thread-74397-1-1.html
(出处: 鱼C论坛)

...你没理解我的意思,我不需要弹窗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 03:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表