0

我有这段代码:

 self.connect(self.Yes_button,SIGNAL('clicked()'),self.Yes_pressed)
 self.connect(self.No_button,SIGNAL('clicked()'),self.No_pressed)

def Yes_pressed(self):
    self.Box.append("Hello")
    time.sleep(2)
    self.Box.append("Text2")

它的作用是当按下“是”按钮时,它首先等待 2 秒,然后附加 Hello 和 Text2(Box 是 QTextBrowser() 对象)我怎么能让它附加一个,等待 2 秒然后附加另一个呢?有一个简单的解决方案吗?

4

1 回答 1

2

您可以使用pyqt's Qtimer. 更具体地说singleShot

设置 :QTimer.singleShot (int msec, QObject receiver, SLOT()SLOT() member)

QtCore.QTimer.singleShot(1000, lambda: self.Box.append("Text2")) #1000 milliseconds = 1 second

或者你可以尝试这个实现:

    self.timerScreen = QTimer()
    self.timerScreen.setInterval(1000) #1000 milliseconds = 1 second
    self.timerScreen.setSingleShot(True)
    self.timerScreen.timeout.connect(self.Box.append("Text2"))

第2部分

您可能可以这样做,但我不建议这样做:

def testSleep(self):
    self.lineEdit.setText('Start')
    QtCore.QTimer.singleShot(10000, lambda: self.Box.append("Text2")) 
    QtCore.QTimer.singleShot(10000,lambda: self.timerEvent)


def timerEvent(self):
    QtCore.QTimer.singleShot(10000, lambda: self.Box.append("Text3"))

你最好只做这样的事情:

x = 10000 #or whatever number
QtCore.QTimer.singleShot(10000 + x, lambda: self.Box.append("Text3"))
于 2013-08-12T18:43:01.347 回答