2016-11-09 266 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

非常感謝。 :) –