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

今天解决了一个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);

猜你喜欢

转载自blog.csdn.net/explorer9607/article/details/83587287
今日推荐