Как внутри цикла присваивать новые значения в QLineEdit?
Пытаюсь сделать таймер обратного отсчета.
Функция timer3()
работает, но при попытке вывода в QLineEdit
- self.time_edit.setText(str(self.text))
вывод происходит только после завершения функции полностью.
Можно ли как-то это исправить?
Вывод в консоль работает.
Пользователь вручную в интерфейсе вводит время, далее по клику старт это время получаю и отправляю в функцию timer3()
...
self.time_edit = QLineEdit(self)
self.time_edit.setMouseTracking(True)
self.time_edit.setGeometry(QtCore.QRect(27, 60, 490, 220))
self.time_edit.setObjectName("time_edit")
self.time_edit.setMaxLength(8)
self.time_edit.setText("00:00:00")
self.time_edit.textEdited.connect(clicked_stop)
self.time_edit.setStyleSheet('''QLineEdit#time_edit{
font-family: "DS-Digital";
font-size: 120px;
border: solid;
border-width: 0px;
border-color: rgb(153, 153, 153);
color: rgb(145, 215,227);
padding-left:20px;
padding-right:20px;
}''')
def action_btn_start(self):
self.text = self.time_edit.text()
self.text = datetime.strptime(self.text, "%H:%M:%S").time()
self.timer3()
def action_reset(self):
self.time_edit.setText("00:00:00")
def timer3(self):
while (True):
time.sleep(1)
if self.text.second == 00 and self.text.minute == 00:
if self.text.hour != 00:
self.text = self.text.replace(hour=self.text.hour - 1)
self.text = self.text.replace(minute=59)
self.text = self.text.replace(second=59)
else:
break
elif self.text.second == 00:
self.text = self.text.replace(minute=self.text.minute - 1)
self.text = self.text.replace(second=59)
elif self.text.second != 00:
self.text = self.text.replace(second=self.text.second - 1)
self.time_edit.setText(str(self.text))
print(self.text)
...
Источник: Stack Overflow на русском