我有这段代码:
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")
它的作用是当按下Yes按钮时它先等待2秒然后追加Hello和Text2(Box是一个QTextBrowser()对象)我怎么能这样做它会附加一个,等待2秒并附加另一个一个而不是?有一个简单的解决方案吗?
答案 0 :(得分: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"))