2016-11-09 7 views
1

У меня есть объект QLineEdit, а встроенный сигнал «returnPressed» подключен для выполнения некоторой задачи. Но когда я нажимаю return, я хочу уведомить пользователя о нажатии клавиши, слегка мигая другим цветом в течение небольшой продолжительности и возвращаясь к исходному цвету. Хотя это можно сделать, изменив цвет фона с помощью таблиц стилей заданий и функции 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(). Вместо этого вы можете использовать QTimer. Статический метод QTimersingleShot может вызывать функцию после ожидания 500 мс. Функция, которую вы вызывали в этом случае, может быть лямбда-функцией, которая устанавливает таблицу стилей.

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()' заставляет программу буквально спать. Хотя это вполне приемлемо в консольном приложении, это вызовет проблемы в графических пользовательских интерфейсах. GUI должны постоянно реагировать на все действия пользователя (перемещая мышь, помещая курсор) и прослушивать события. Если программа засыпает, она не может выполнять эти задачи, и не реагирующая программа обычно сообщается как разбитая системой управления окнами. (см. также [здесь] (http://stackoverflow.com/questions/16801007/sleep-is-not-working-on-pyqt4)) – ImportanceOfBeingErnest

+0

Большое спасибо. :) –