吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1113|回复: 3
收起左侧

[求助] Python多线程问题,求大佬解惑

[复制链接]
lwlong21 发表于 2020-11-3 09:40
我在用 threading + easygui 这两个库 运行多线程并行的时候 当弹窗多余4个的时候,关闭所有弹窗后会报错, 想请教下问题如何解决
代码和报错信息如下
import threading
import time
import easygui

def 弹框(弹框消息=''):
    easygui.msgbox(弹框消息)
def 线程弹框(弹框消息=''):
    threading.Thread(target=弹框, args=(弹框消息,)).start()
while 1:
    线程弹框(1)
    线程弹框(2)
    线程弹框(3)
    线程弹框(4)
    time.sleep(10)

报错信息

报错信息

报错信息

报错信息

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

家有葫芦仔 发表于 2020-11-3 10:02
好像是线程错乱的原因吧
callmewww 发表于 2020-11-3 10:05
    import threading
    import time
    import easygui


    def box(cont=''):
        easygui.msgbox(cont)


    def threadBox(cont=''):
        threading.Thread(target=box, args=(cont,)).start()


    easygui.msgbox(0)    # 关键点在这里
    while 1:
        threadBox(1)
        threadBox(2)
        threadBox(3)
        threadBox(4)
        time.sleep(30)
在主进程加一个窗口(可能要改一下你的ui逻辑)就好了,原理(以下为copy):
这是因为您在线程上创建了Tk主窗口,而您没有在进程主线程上运行UI。当您退出进程时,正在从进程主线程执行清理。对于您的示例,最简单的解决方案是在主线程(进程默认线程)上创建UI,并且只将另一个线程用于辅助任务。如果您的实际应用程序无法在主线程上创建UI,那么您将需要研究如何从它自己的线程终止Tk。删除Tcl解释器可能对您有帮助。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lwlong21 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| lwlong21 发表于 2020-11-3 10:27
本帖最后由 lwlong21 于 2020-11-3 10:51 编辑
callmewww 发表于 2020-11-3 10:05
import threading
    import time
    import easygui

十分感谢,确实解决了问题,但是我在测试的时候 发现如果在下方任务栏中同时关闭多窗口时和堆积很多窗口之后再关闭跟以前一样也会报错,这个问题有办法解决吗?

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
mysqli + 1 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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