通过多线程解决Tkinter问题,在button事件中进行高IO和耗时操作导致窗口无响应
发布时间
阅读量:
阅读量
昨日通过Python自行开发了一个小型服务器,一时兴起使用Tkinter设计了一个图形用户界面,并将启动监听功能的函数与界面上的一个按钮进行绑定。然而,在点击“启动服务”按钮后,界面立即出现无响应现象。经过查找资料发现,服务器函数中所包含的while循环导致了GUI的响应被阻塞。同样地,在执行高I/O操作时也会遇到类似问题。此外,若采用单独线程分别处理GUI交互与功能逻辑,则容易引发系统资源紧张,从而造成界面冻结。
应对策略:
(1)多线程方案
采用多线程机制来分别运行GUI界面与功能模块是一种非常有效的解决方式。幸运的是,在Python中实现多线程操作极为简便。具体实施方式如下:
import threading
t= threading.Thread(target = func)
t.start()
首先导入threading模块,通过调用threading.Thread类来生成线程对象,其中func参数用于指定待执行的函数。
(2)分类GUI与功能类
应将图形用户界面组件与业务逻辑类进行区分,具体的代码实现示例如下:
from socket import *
from tkinter import *
import t
全部评论 (0)
还没有任何评论哟~
