lwlong21 发表于 2020-11-3 09:40

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

我在用 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解释器可能对您有帮助。

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]
查看完整版本: Python多线程问题,求大佬解惑