欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于python tkinter 多线程依然无响应问题

程序员文章站 2022-05-02 16:55:39
...

今天解决了一个GUI程序的多线程问题。

因为GUI程序在执行高IO操作的时候容易出现假死和无响应的状态,所以需要用到多线程。

但我的程序开了线程之后依然是无响应状态。几次尝试,终于找到问题所在。

1.首先,我的程序中有一个按钮button,点击之后运行函数self.starting

self.my_button = tk.Button(root, text="确定",command= self.starting)

其中self.starting用于启动线程,代码如下:

    def starting(self):
        self.thread = threading.Thread(target=self.download)
        self.thread.setDaemon(True)
        self.thread.start()

2.线程中的target为self.downoad是一个自己定义的函数,用于执行某些功能,一开始的时候我的代码是这样写的

self.thread = threading.Thread(target=self.download(data))

因为download函数需要一个参数,所以我就想当然的将参数写在了创建线程函数中,但是发现依然是卡死,后来我就把参数data删了,用其他的方法传递参数,然后就不再出现卡死现象,至于原因我还没仔细的查过。

可以用一个简单的输出函数来测试一下:

    def download(self):
        print("data");
        time.sleep(5);