点击按钮修改标签后3秒清空,用time.sleep致程序无响应求助
解决UI延时更新时的线程阻塞问题
- 别用
time.sleep(3),这会卡死UI主线程,导致界面无响应、按钮一直处于按下状态,完全不可取。 - 用UI框架自带的异步延时工具,以你用的Qt框架为例,用
QTimer.singleShot实现非阻塞的延时操作:
# 先导入QTimer,根据你用的PyQt/PySide版本调整导入路径 from PyQt5.QtCore import QTimer def apply_click(self): ui.label_ischanged.setText("Applied!") # 3000毫秒(3秒)后自动调用clear_label函数 QTimer.singleShot(3000, self.clear_label) def clear_label(self): ui.label_ischanged.setText("")
- 原理:
QTimer.singleShot不会阻塞当前线程,它会在后台计时,时间到了再回到UI线程执行清空标签的操作,这样界面全程都能正常响应。
内容的提问来源于stack exchange,提问作者Not0_0Parsa
相关产品推荐
相关产品推荐

