python弹出窗口后卡死_python的tkinter模块GUI编程为啥用了while循环之后就会使得程序出现卡死未响应崩溃?...

在Python的tkinter GUI编程中,若在按钮事件中触发while循环,会导致窗口卡死。解决办法是利用线程实现并发处理。介绍如何使用线程避免卡死,并探讨了不同情况下GUI的处理策略,如进度条显示或独立的读取结果按钮。
摘要由CSDN通过智能技术生成

这位同学,首先无代码无真相。只能在这里猜测一下,你在GUI界面中点击了某个按钮,调用的函数然后触发了某种while循环,这个时候前台GUI将“未响应”卡死。不过一旦调用函数的while循环结束,GUI界面将再次可用。

不使用线程的话,后台while循环处理和前台GUI显示是依次串行的,做完一件事情才能做另一件。使用线程是GUI通常的做法,可以使后台while循环处理中的信息实时显示在前台GUI上。

关于tkiner的after方法,只是将函数的调用时间向后延时一些,进入调用的函数后与直接调用函数没有区别。

此外,根据题主说的request的事情,继续猜一下。首先来说下线程的事情,处理request的线程不能这样使用

p=Thread(target=a_while_func_about_request, args=(some_args))

p.start()

p.join()

这样使用线程虽然将主线程的while循环移到线程p的内部,但由于主线程一直等待p.join()什么也做不了,相当于主线程直接调用了a_while_func_about_request函数。要利用到线程的并发性能,主线程不能傻傻的p.join(),至少还需要一个标志变量,通过标志变量判断线程p是否完成request请求,例如:

# 主线程

request_done = False

p=Thread(target=a_while_func_about_request, args=(some_args))

p.start()

while request_done == False:

# 继续处理主线程逻辑

...

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值