【发布时间】:2017-05-23 13:17:18
【问题描述】:
我不能在我的 pyqt 应用程序中使用 time.sleep,因为这会冻结 GUI 线程,所以 GUI 将在这段时间内完全冻结。我一直在寻找一种方法来处理这个问题。
我尝试使用 QTimer,但似乎需要将它们链接到另一个函数?就像等待十秒钟然后运行一些功能。有没有办法让它等待然后继续当前功能?
def num(self):
for i in range(1,999):
print i
#Add some sleep here
def testSleep(self):
QtCore.QTimer.singleShot(2000, self.num)
【问题讨论】:
-
将当前函数拆分为两个函数并使用
QTimer -
函数被一次又一次地执行
-
见文档QTimer - 它有方法
singleShot() -
最好添加有问题的小型工作示例 - 它会更具可读性,每个人都可以运行它并查看您的问题。
-
对我来说,你应该使用
QTimer而不是for-loop类似if run_again: singleShot(2000, self.num)