关于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);
上一篇: 关于多线程的那点事 -Python
下一篇: 猫眼电影爬取