我正在编写一个小型应用程序,我需要在用户在输入框中输入内容后立即运行某个功能。
我是这样实现的:
from PyQt5.QtWidgets import *
import sys
from time import sleep
def function():
sleep(2)
class Input(QLineEdit):
def __init__(self, main_window):
super().__init__(main_window)
self.main_window = main_window
def keyPressEvent(self, event):
super().keyPressEvent(event)
function()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUi()
def setupUi(self):
self.input = Input(self)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
问题是Input用户输入的文字并没有立即出现,而是在函数执行后才出现,不是很方便。
如何解决这个问题?
不要
time.sleep在主线程上使用 -这会阻塞.我会这样做,这样我就不必等待任何计时器更新。并且没有接口延迟。