我有一个简单的python qt4代码,可以垂直打印相同的标签。如何在下一个打印标签之前延迟(time.sleep)1秒钟?
class Ui_Form(object): def setupUi(self, Form): ..... self.pushButton.clicked.connect(self.praxis) self.label_i = 0 self.timer = QTimer(self) self.timer.timeout.connect(self.praxis) self.timer.start(1000) def praxis(self): self.lbl1_count = 119 for i in range(10): self.lbl_1 = QtGui.QLabel(Form) self.lbl_1.setGeometry(QtCore.QRect(120, self.lbl1_count, 14, 34)) self.lbl_1.setText(_translate("Form", "Something Text", None)) font = QtGui.QFont() font.setPointSize(16) self.lbl_1.setFont(font) self.lbl_1.setObjectName(_fromUtf8("label")) self.lbl1_count += 35 self.label_i += 1 if self.label_i >= 10: self.timer.stop()
答案 0 :(得分:1)
您可以使用QTimer
在x个时间后触发函数调用。它比使用sleep
更好,因为它不会冻结GUI,您会在发生更新时看到更新。
def __init__(self):
...
self.label_i = 0
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_label)
self.timer.start(1000)
def update_label(self):
# Your label updating code above
...
self.label_i += 1
if self.label_i >= 10:
self.timer.stop()
这将创建一个QTimer
,它将在第二次(1000毫秒)内调用您的更新函数。在该函数中,它检查函数是否已被调用10次,然后停止计时器。