Как добавить событие при изменении QTimeEdit и, как изменить значение QTimeEdit PySide2

У меня есть QTimeEdit, мне надо при изменении значения вызывать функцию test_func().

И как я могу изменять значение QTimeEdit по нажатию кнопки?


Ответы (2 шт):

Автор решения: Alexander Chernin

Вот сигнал (timeChanged) получения измененного значения времени

class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.te = QTimeEdit(self)

        self.te.timeChanged.connect(self.timeChanged)

    def onTimeChanged(self, time):
        print(time.toString("HH.mm.ss"))

Вот слот (setTime) для установки нового значения времени

    self.timeEdit.setTime(<QTime>)
→ Ссылка
Автор решения: S. Nick

Пожалуйста, всегда предоставляйте код, который вы уже написали.

void QDateTimeEdit::timeChanged(QTime time)

Этот сигнал излучается всякий раз, когда изменяется время.

import sys
from PyQt5.Qt import *                     # установите свои имплрты для PySide2


class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()   
        
        self.timeEdit = QTimeEdit(QTime.currentTime())   
        self.timeEdit.setDisplayFormat('HH:mm:ss')
        self.timeEdit.timeChanged.connect(self.time_changed)

        self.button = QPushButton('Увеличить время на 5 минут')
        self.button.clicked.connect(self.button_clicked)

        self.layout = QFormLayout(self)
        self.layout.addRow(QLabel('timeChanged'), self.timeEdit)
        self.layout.addRow('', self.button)

    def time_changed(self, time):
        print(f'Time Changed: {time} --> {time.toString("hh:mm:ss")}')
        
    def button_clicked(self):
        _time = self.timeEdit.time()                      # получить время
        print(f'\nTime         : {_time}')
        _time = _time.addSecs(60 * 5)                     # изменить время
        print(f'Time + 5 мин.: {_time}')
        self.timeEdit.setTime(_time)                      # установить новое время
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setFont(QFont("Times", 12, QFont.Bold))
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка