Как запретить редактировать 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_())
