当前位置: 代码迷 >> python >> Python QT4 - 时间睡眠
  详细解决方案

Python QT4 - 时间睡眠

热度:86   发布时间:2023-06-13 14:25:23.0

我有一个简单的 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()

您可以使用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 次,然后停止计时器。