问题描述
我有一个简单的 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()
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 次,然后停止计时器。