Как запретить редактировать QTimeEdit в pyqt5?

Есть какой-то аналогичный параметр, как setReadOnly(True) для QLineEdit, только для QTimeEdit? В доках не могу найти.


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

Автор решения: S. Nick

Ответ уже предоставил @AlexanderChernin . Я предоставлю демо пример.

import sys
from PyQt5.QtCore import QDate, QTime, QDateTime
from PyQt5.QtWidgets import (QApplication, QWidget, QDateTimeEdit, QDateEdit,
                             QTimeEdit, QVBoxLayout, QFormLayout, QLabel)
from PyQt5.QtGui import QFont

class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()    
        self.datetime_1 = QDateTimeEdit(self)                                    
        self.datetime_1.dateChanged.connect(lambda: print('Date Changed!'))

        self.datetime_2 = QDateTimeEdit(QDateTime.currentDateTime(), self)   
        self.datetime_2.setDisplayFormat('yyyy-MM-dd HH:mm:ss')
        self.datetime_2.timeChanged.connect(lambda: print('Time Changed!'))
        #print(self.datetime_2.date())
        #print(self.datetime_2.time())
        #print(self.datetime_2.dateTime())

        self.datetime_3 = QDateTimeEdit(QDateTime.currentDateTime(), self)   
        self.datetime_3.dateTimeChanged.connect(lambda: print('DateTime Changed!'))
        self.datetime_3.setCalendarPopup(True)

        self.datetime_4 = QDateTimeEdit(QDate.currentDate(), self)         
        self.datetime_5 = QDateTimeEdit(QTime.currentTime(), self)

        self.date = QDateEdit(QDate.currentDate(), self)                 
        self.date.setDisplayFormat('yyyy/MM/dd')
        #print(self.date.date())

        self.time = QTimeEdit(QTime.currentTime(), self)                
        self.time.setDisplayFormat('HH:mm:ss')
        self.time.setReadOnly(True)                                                        # <<----<
        #print(self.time.time())

        self.v_layout = QFormLayout(self)
        self.v_layout.addRow(QLabel('dateChanged'), self.datetime_1)
        self.v_layout.addRow(QLabel('timeChanged'), self.datetime_2)
        self.v_layout.addRow(QLabel('dateTimeChanged'), self.datetime_3)
        self.v_layout.addRow(QLabel('QDateTimeEdit\nQDate.currentDate()'), self.datetime_4)
        self.v_layout.addRow(QLabel('QDateTimeEdit\nQTime.currentTime()'), self.datetime_5)
        self.v_layout.addRow(QLabel('QDateEdit\nQDate.currentDate()'), self.date)
        self.v_layout.addRow(QLabel('QTimeEdit\nQTime.currentTime()'), self.time)


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

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

→ Ссылка