Python,PySide睡眠没有拖延整个程序?

时间:2013-08-12 18:33:00

标签: python user-interface sleep pyside

我有这段代码:

 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秒并附加另一个一个而不是?有一个简单的解决方案吗?

1 个答案:

答案 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"))