gpt4 book ai didi

python - sleep 不适用于 pyqt4

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:06 26 4
gpt4 key购买 nike

我遇到了这个问题。我试图在 pyqt4 上的 lineEdit 对象上设置文本,然后等待几秒钟并更改同一 lineEdit 的文本。为此,我使用了 python 时间模块上提供的 time.sleep() 函数。但我的问题是,它不是设置文本,然后等待并最终重写 lineEdit 上的文本,而是等待它应该休眠的时间,只显示最终文本。我的代码如下:

from PyQt4 import QtGui
from gui import *

class Ventana(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
self.button.clicked.connect(self.testSleep)

def testSleep(self):
import time
self.lineEdit.setText('Start')
time.sleep(2)
self.lineEdit.setText('Stop')

def mainLoop(self, app ):
sys.exit( app.exec_())

if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Ventana()
window.show()
sys.exit(app.exec_())

最佳答案

你不能在这里使用time.sleep,因为这会卡住 GUI 线程,因此 GUI 将在这段时间内完全卡住。

您可能应该使用 QTimer并使用它的 timeout 信号来安排延迟传送的信号,或者它是 singleShot 方法。

例如(调整您的代码以使其在没有依赖项的情况下运行):

from PyQt4 import QtGui, QtCore

class Ventana(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setLayout(QtGui.QVBoxLayout())
self.lineEdit = QtGui.QLineEdit(self)
self.button = QtGui.QPushButton('clickme', self)
self.layout().addWidget(self.lineEdit)
self.layout().addWidget(self.button)
self.button.clicked.connect(self.testSleep)

def testSleep(self):
self.lineEdit.setText('Start')
QtCore.QTimer.singleShot(2000, lambda: self.lineEdit.setText('End'))

def mainLoop(self, app ):
sys.exit( app.exec_())

if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Ventana()
window.show()
sys.exit(app.exec_())

关于python - sleep 不适用于 pyqt4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16801007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com