2016-11-09 227 views
1

我有一个QLineEdit对象,并且内置信号'returnPressed'被连接来执行一些任务。但是,当我点击返回时,我想通过闪烁不同的颜色持续一小段时间并将其反转回原始颜色来通知用户有关按键的信息。虽然,这可以通过设置样式表和time.sleep()函数来改变背景颜色来完成,但是我想要一个直接的一行方法来完成这个任务。QLineEdit在PySide中按下回车按钮时颜色变化

+1

我不认为有这样的单行解决方案。但是,设置样式表并在一段时间后重新设置它有什么问题?唯一重要的是:**不要在应用程序中使用'time.sleep()',而应该使用'QTimer'。 – ImportanceOfBeingErnest

+0

self.lineEdit_CycleTime.setStyleSheet(“background-color:rgb(5,8,5)”) time.sleep(0.5) self.lineEdit_CycleTime.setStyleSheet(“background-color:rgb(125,125,125)” ) –

+0

请建议使用QTimer代替上述代码的time.sleep() –

回答

0

正如我在评论中所建议的那样,您需要避免使用time.sleep()。相反,您可以使用QTimerQTimer的静态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)")) 
+0

嗨,它工作顺利。非常感谢。只是想知道为什么time.sleep()是一个坏主意,而不是QTimer.singleshot()。 –

+0

'time.sleep()'使程序从字面上入睡。虽然这在控制台应用程序中完全可以接受,但它会在图形用户界面中造成麻烦。图形用户界面需要始终保持响应,以便用户在其中进行操作(移动鼠标,放置光标)并收听事件。如果程序休眠,它不能执行这些任务,并且通常由窗口管理系统报告无响应程序崩溃。 (另见[这里](http://stackoverflow.com/questions/16801007/sleep-is-not-working-on-pyqt4)) – ImportanceOfBeingErnest

+0

非常感谢。 :) –