Qt QLineEdit在PySide中按return键时闪烁的颜色更改

Qt QLineEdit在PySide中按return键时闪烁的颜色更改,qt,pyqt,pyside,Qt,Pyqt,Pyside,我有一个QLineEdit对象,内置信号“returnPressed”被连接以执行某些任务。但是,当我单击return时,我想通过在一小段时间内闪烁不同的颜色并反转回原始颜色来通知用户有关按键的信息。虽然这可以通过设置样式表和time.sleep()函数更改背景颜色来实现,但我需要一种直接的单行方法来实现。正如我在评论中所建议的,您需要避免使用time.sleep()。相反,您可以使用QTimer。QTimer的静态singleShot方法可以在等待500毫秒后调用函数。在这种情况下,您要调用的

我有一个QLineEdit对象,内置信号“returnPressed”被连接以执行某些任务。但是,当我单击return时,我想通过在一小段时间内闪烁不同的颜色并反转回原始颜色来通知用户有关按键的信息。虽然这可以通过设置样式表和time.sleep()函数更改背景颜色来实现,但我需要一种直接的单行方法来实现。

正如我在评论中所建议的,您需要避免使用
time.sleep()
。相反,您可以使用
QTimer
QTimer
的静态
singleShot
方法可以在等待500毫秒后调用函数。在这种情况下,您要调用的函数可以是lambda函数,它设置样式表

self.lineEdit_CycleTime.setStyleSheet("background-color: rgb(5, 8, 5)")
QtCore.QTimer.singleShot(500, lambda :self.lineEdit_CycleTime.setStyleSheet("background-color: rgb(125,125,125)") )

我不认为有一个单一的解决方案。但是设置样式表并在一段时间后将其设置回有什么不对呢?唯一重要的是:不要在应用程序中使用
time.sleep()
。相反,您可以使用
QTimer
.self.lineEdit\u CycleTime.setStyleSheet(“背景色:rgb(5,8,5)”)time.sleep(0.5)self.lineEdit\u CycleTime.setStyleSheet(“背景色:rgb(125,125)”)请建议使用QTimer代替time.sleep()对于上述代码,它工作顺利。谢谢。我只是想知道为什么在这里使用time.sleep()而不是QTimer.singleshot()是个坏主意。
time.sleep()
会导致程序完全休眠。虽然这在控制台应用程序中是完全可以接受的,但它会在图形用户界面中造成问题。GUI需要始终保持响应,以便用户能够在其中进行操作(移动鼠标、放置光标)并监听事件。如果程序处于休眠状态,则无法执行这些任务,窗口管理系统通常会报告无响应的程序崩溃。(另见)