def __init__(self): super(Demo, self).__init__() self.calendar = QCalendarWidget(self) # 通过setMinimumDate()和 # setMaximumDate()可以设置日历的最小和最大日期 # (可用setDateRange()替代),传入的参数为QDate。 self.calendar.setMinimumDate(QDate(1946, 2, 14)) # 2 self.calendar.setMaximumDate(QDate(6666, 6, 6)) # 3 # self.calendar.setDateRange(QDate(1946, 2, 14), QDate(6666, 6, 6)) # self.calendar.setFirstDayOfWeek(Qt.Monday) # 4 # self.calendar.setSelectedDate(QDate(1946, 2, 14)) # 5 # setGridVisible(bool)方法可以设置是否在日历上显示网格; self.calendar.setGridVisible(True) # 6 # 当点击到日历上的某个日期时,clicked信号就会被触发 self.calendar.clicked.connect(self.show_emotion_func) # 6 self.calendar.setFirstDayOfWeek(Qt.Sunday) print(self.calendar.minimumDate()) # 7 print(self.calendar.maximumDate()) print(self.calendar.selectedDate()) self.label = QLabel(self) # 8 self.label.setAlignment(Qt.AlignCenter) # setSelectedDate()方法可以设置日历初始化时所显示的日期 # ,如果不设置,则默认是当天日期; weekday = self.calendar.selectedDate().toString('ddd') # 9 self.label.setText(EMOTION[weekday]) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.calendar) self.v_layout.addWidget(self.label) self.setLayout(self.v_layout) self.setWindowTitle('QCalendarWidget')
def parse(self): year = int.from_bytes(self.packet[0], "big") month = int.from_bytes(self.packet[1], "big") day = int.from_bytes(self.packet[2], "big") hour = int.from_bytes(self.packet[3], "big") minute = int.from_bytes(self.packet[4], "big") second = int.from_bytes(self.packet[5], "big") print(year, month, day, hour, minute, second) date = QDate(year + 2000, month, day) time = QTime(hour, minute, second) self.dateTimeEdit.setDate(date) self.dateTimeEdit.setTime(time) [index, gyrox, gyroy, gyroz, accx, accy, accz, magx, magy, magz, ch1_volt, ch1_amp, ch2_volt, ch2_amp] = \ struct.unpack("iiiiiiiiiififi", self.packet[8:64]) print("stream index : ", index) print("gyro : ", gyrox, gyroy, gyroz) print("acc : ", accx, accy, accz) print("mag : ", magx, magy, magz) print("ch1 : ", ch1_volt, ch1_amp) print("ch2 : ", ch2_volt, ch2_amp) self.Index_lineEdit.setText(str(index)) self.lineEdit_Status_gyrox.setText(str(gyrox)) self.lineEdit_Status_gyroy.setText(str(gyroy)) self.lineEdit_Status_gyroz.setText(str(gyroz)) self.lineEdit_Status_accx.setText(str(accx)) self.lineEdit_Status_accy.setText(str(accy)) self.lineEdit_Status_accz.setText(str(accz)) self.lineEdit_Status_magx.setText(str(magx)) self.lineEdit_Status_magy.setText(str(magy)) self.lineEdit_Status_magz.setText(str(magz)) self.lineEdit_Ch1_vol.setText(str(ch1_volt)) self.lineEdit_Ch1_amp.setText(str(ch1_amp)) self.lineEdit_Ch2_vol.setText(str(ch2_volt)) self.lineEdit_Ch2_amp.setText(str(ch2_amp))
def __init__(self): super().__init__() vbox = QVBoxLayout() hbox1 = QHBoxLayout() self.label_start = QLabel("Start date", self) self.label_start.setStyleSheet("background-color: yellow") self.dateed_start = QDateEdit(self) self.dateed_start.setDate(QDate(2019, 10, 5)) # self.dateed_start.setDate(QDate.currentDate()) self.dateed_start.setCalendarPopup(True) self.label_end = QLabel("End date", self) self.label_end.setStyleSheet("background-color: yellow") self.dateed_end = QDateEdit(self) # self.dateed_end.setDate(QDate(2017, 1, 3)) self.dateed_end.setDate(QDate.currentDate()) self.dateed_end.setCalendarPopup(True) self._btn_getdate = QPushButton("Get all dates", self) self._btn_clear = QPushButton("Clear", self) hbox1.addWidget(self.label_start) hbox1.addWidget(self.dateed_start) hbox1.addWidget(self.label_end) hbox1.addWidget(self.dateed_end) hbox1.addStretch() vbox.addLayout(hbox1) hbox2 = QHBoxLayout() self.cal = QCalendarWidget(self) self.cal.setVerticalHeaderFormat(0) # print(self.cal.sizeHint()) # self.cal.resize(self.cal.sizeHint()) # self.cal.setFixedSize(200, 200) # w, h self.cal.setFixedSize(self.cal.sizeHint()) # w, h hbox2.addWidget(self.cal) hbox2.addWidget(self._btn_getdate) hbox2.addWidget(self._btn_clear) vbox.addLayout(hbox2) self.qtxt = QTextEdit(self) vbox.addWidget(self.qtxt) self.setLayout(vbox) self.setGeometry(100, 100, 300, 650)
def reload(self): self.loading = True if self.win.client: self.number.setText(self.win.client["number"]) self.name.setText(self.win.client["name"]) self.address.setText(self.win.client["address"]) self.email.setText(self.win.client["email"]) self.mobile.setText(self.win.client["mobile"]) self.profession.setText(self.win.client["profession"]) self.reason.setText(self.win.client["reason"]) self.how.setText(self.win.client["how"]) self.notes.setText(self.win.client["notes"]) self.birthday.setDate( QDate(self.win.client["birthday_year"], self.win.client["birthday_month"], self.win.client["birthday_day"])) self.firstcontact.setDate( QDate(self.win.client["first_contact_year"], self.win.client["first_contact_month"], self.win.client["first_contact_day"])) self.fiscal.setText(self.win.client["fiscal"]) else: self.number.setText("") self.name.setText("") self.address.setText("") self.email.setText("") self.mobile.setText("") self.profession.setText("") self.reason.setText("") self.how.setText("") self.notes.setText("") self.fiscal.setText("") self.birthday.setDate(QDate(1900, 1, 1)) self.firstcontact.setDate(QDate(1900, 1, 1)) self.loading = False
def __init__(self, day=1, month=1, year=1900): DATETIME.__init__(self) self._day = day self._month = month self._year = year self._data = DAMGDICT() self.__dict__ = DAMGDICT() self._dob = QDate(self._year, self._month, self._day) self.__dob__ = self._dob.toString(damgvar.fmtl) self.dobs = self._dob.toString(damgvar.fmts) self.initialize()
def __init__(self, license, customer, hired, mileageout, returned=QDate(), mileageback=0, notes=""): self.license = license # plain text self.customer = customer # plain text self.hired = hired # QDate self.mileageout = mileageout # int self.returned = returned # QDate self.mileageback = mileageback # int self.notes = notes # HTML
def fromDict(cls, data): obj = cls() obj.id = data['id'] obj.date = QDate().fromString(data['date'], 'yyyy-MM-dd') obj.type = Models.get().application_types.getItemById(data['type']) obj.client = Models.get().clients.getItemById(data['client']) for item in data['entries']: obj.entries.append(ApplicationEntry.fromDict(item)) if data['contract']: obj.contract = Contract.fromDict(data['contract']) if data['account']: obj.account = Account.fromDict(data['account']) if data['order']: obj.order = Order.fromDict(data['order']) return obj
def createNewMonth(self): try: self.newMonth = NameDaysOfMonth(int(self.ui4.input_Name.text())) if self.newMonth.getName() not in self.monthDict: self.monthDict[self.newMonth.getName()] = [] self.ui.box_Months.addItem(self.newMonth.getName()) self.ui.calendarWidget.setSelectedDate(QDate(2019,self.newMonth.getNumber(),1)) except Exception as ex: msg = QtWidgets.QMessageBox() msg.setWindowTitle('Warning!') msg.setIcon(QtWidgets.QMessageBox.Warning) msg.setText(ex.__str__()) msg.exec()
def fill_personal_data(self): cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(f"""SELECT * FROM main.enrollees WHERE id={self.enrollee_id}""") items = cur.fetchone() self.surname_line.setText(items['second_name']) self.first_name_line.setText(items['first_name']) self.father_name_line.setText(items['father_name']) self.gender_cmb.setCurrentText(items['sex']) self.email_line.setText(items['email']) self.birth_date.setDate(QDate(*map(int, str(items['birth_date']).split('-')))) self.phone_line.setText(items['phone_number']) self.birthplace_line.setText(items['birth_city']) self.dormitory_cmb.setCurrentText(items['dorm_needed']) cur.close()
def initUI(self): lbl = QLabel('QDateEdit') dateedit = QDateEdit(self) dateedit.setDate(QDate.currentDate()) dateedit.setMinimumDate(QDate(1900, 1, 1)) dateedit.setMaximumDate(QDate(2100, 12, 31)) # QDateEdit 클래스를 이용해서 날짜 편집 위젯을 하나 만들어줍니다. # # setDate 메서드에 QDate.currentDate()를 입력해서 프로그램이 실행될 때 # 현재 날짜로 표시되도록 합니다. # # setMinimumDate와 setMaximumDate를 이용하면 사용자가 # 선택할 수 있는 날짜의 범위를 제한할 수 있습니다. # # 최소 날짜는 디폴트로 1752년 9월 14일로 설정되어 있고, # 최대 날짜는 9999년 12월 31일로 설정되어 있습니다. # # 최소 날짜는 최소 100년 1월 1일 이상이어야합니다. # dateedit.setDateRange(QDate(1900, 1, 1), QDate(2100, 12, 31)) # setDateRange 메서드는 setMinimumDate와 setMaximumDate를 # 동시에 사용하는 것과 같습니다. vbox = QVBoxLayout() vbox.addWidget(lbl) vbox.addWidget(dateedit) vbox.addStretch() # 수직 박스 레이아웃을 이용해서 라벨과 날짜 편집 위젯을 수직으로 배치하고, # 전체 위젯의 레이아웃으로 설정합니다. self.setLayout(vbox) self.setWindowTitle('QDateEdit') self.setGeometry(300, 300, 300, 200) self.show()
def __init__(self, init_date=QDate(), parent=None): super(MyDateEdit, self).__init__(parent=parent) self.my_date = init_date # 初始化外观 self.resize(150, 20) self.setInputMask(r'9999/99/99;_') self.setText(self.my_date.toString('yyyy/MM/dd')) self.show_action = QAction(self) self.show_action.setIcon(QIcon('./down.ico')) self.addAction(self.show_action, QLineEdit.TrailingPosition) # 信号和槽连接 self.show_action.triggered.connect(self._show_calendar_func)
def raz(self): '''Réinitialise toutes les variables de la fenêtre afin de recommencer une nouvelle requête''' self.possessionBool = False self.aappmaBool = False self.anneeSignBool = False self.anneeFinBool = False self.CBool = False self.CSBool = False self.CSPBool = False self.spnId.setValue(0) self.wrq = "" self.txtSql.setText("") self.wwhere = "" self.wwherePossession = "" self.wwhereProprio = "" self.chkPossession.setChecked(False) self.dateSign.setDate(QDate(2000, 1, 1)) self.dateFin.setDate(QDate(2000, 1, 1)) self.btnEt.setEnabled(False) self.btnOu.setEnabled(False) self.btnId.setEnabled(True) self.btnSign.setEnabled(True) self.btnFin.setEnabled(True) self.btnRiviere.setEnabled(True) self.btnAappma.setEnabled(True) self.btnPossession.setEnabled(True) self.btnC.setEnabled(True) self.btnCS.setEnabled(True) self.btnCSP.setEnabled(True) self.btnProprio.setEnabled(True) self.btnAdresse.setEnabled(True)
def ScrollBarSet(self): distance = self.ui.verticalScrollBar.value() pos = distance - self.SliderValue if pos > 0: ValueNow = self.SliderValue + 1 elif pos < 0: ValueNow = self.SliderValue - 1 else: return self.ui.verticalScrollBar.setValue(ValueNow) self.SliderValue = ValueNow year = self.ui.dateEdit.date().year() # self.DateSet(year,ValueNow+1,1) self.ui.dateEdit.setDate(QDate(year, ValueNow + 1, 1))
def setupUI(self): self.setGeometry(600, 200, 1200, 600) self.setWindowTitle("PyChart Viewer v0.1") self.setWindowIcon(QIcon('icon.png')) self.lineEdit = QLineEdit() self.startEdit = QDateEdit() self.startEdit.setDate(QDate(2016, 1, 1)) self.endEdit = QDateEdit() self.endEdit.setDate(QDate(2020, 3, 15)) self.pushButton = QPushButton("차트그리기") self.pushButton.clicked.connect(self.pushButtonClicked) self.fig = plt.Figure() self.canvas = FigureCanvas(self.fig) leftLayout = QVBoxLayout() leftLayout.addWidget(self.canvas) # Right Layout rightLayout = QVBoxLayout() rightLayout.addWidget(self.lineEdit) rightLayout.addWidget(self.startEdit) rightLayout.addWidget(self.endEdit) rightLayout.addWidget(self.pushButton) rightLayout.addStretch(1) layout = QHBoxLayout() layout.addLayout(leftLayout) layout.addLayout(rightLayout) layout.setStretchFactor(leftLayout, 1) layout.setStretchFactor(rightLayout, 0) self.setLayout(layout)
def toCSV(self): txt = [] today = QDate().currentDate() file = open('Raspored_'+today.toString()+'.csv', 'w+', newline ='', encoding="utf-8") for x in range(len(self.btns)): txt.append(0) for x in range(len(self.btns)): txt[x] = self.btns[x].text() with file: write = csv.writer(file) write.writerows(txt) file.close()
def __init__(self, parent=None): QLCDNumber.__init__(self) self.parent = parent self.signals = SignalManager(self) self.settings = Settings(SETTING_FILEPTH['app'], ST_FORMAT['ini'], self) self.time = QTime() self.zone = QTimeZone() self.date = QDate() self.values = dict(w=self.width(), h=self.height(), x=self.x(), y=self.y())
def refresh(self): startDate = QDateTime.currentMSecsSinceEpoch() endDate = QDateTime(QDate(2022, 2, 4), QTime(0, 0, 0)).toMSecsSinceEpoch() interval = endDate - startDate if interval > 0: days = interval // (24 * 60 * 60 * 1000) hour = (interval - days * 24 * 60 * 60 * 1000) // (60 * 60 * 1000) min = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000) // (60 * 1000) sec = (interval - days * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000) // 1000 intervals = str(days) + ':' + str(hour) + ':' + str( min) + ':' + str(sec) self.lcd.display(intervals)
def setComplexLabels(self, indexMonth): """cambia il giorno nelle celle""" listaDaInserire = self.listaGiorniDellAnno[indexMonth] _data = QDate(self.baseDate.year(), indexMonth + 1, 1) self.setBaseDate(_data) baseDate = self.baseDate self.daysInTheMonth = MeseGiorniDictGen.giorniDelMese( QDate(baseDate.year(), indexMonth + 1, 1)) self.currentMonth = indexMonth + 1 self.indexMonth = indexMonth dateEscluse = [] for row in range(6): for col in range(7): data = listaDaInserire[row][col] itemWidget = self.table.cellWidget(row, col) numeroGiorno = str(data.day()) itemWidget.setText(numeroGiorno) itemWidget.setData(data) # self.setIconsAndBooked(data, itemWidget) if data not in self.daysInTheMonth: itemWidget.setEnabled(False) dateEscluse.append(data) else: itemWidget.setEnabled(True)
def on_dateEdit_startdate_dateChanged(self, q_date): try: if type(self.ori_detail['startdate']) is str: self.new_detail['startdate'] = q_date.toPyDate() return if q_date != QDate(self.ori_detail['startdate']): self.new_detail['startdate'] = q_date.toPyDate() else: try: del self.new_detail['startdate'] except KeyError: pass except KeyError: self.new_detail['startdate'] = q_date.toPyDate()
def initUI(self): #Calendar widget self.calendar = QCalendarWidget(self) self.calendar.setMinimumSize(400, 300) self.calendar.setFont(QFont("Berlin Sans FB", 15)) #Activity Label self.activity = QLabel(self) self.activity.move(20, 310) self.activity.setFont(QFont("Berlin Sans FB", 15)) #If there is no file named activity.txt, it creates try: activity = open("activity.txt", "r") self.activity.setText(activity.read()) activity.close() except: activity = open("activity.txt", "w") activity.close() #If there is no file named save.txt, it creates try: save = open("save.txt", "r") saveLines = save.readlines() selectedYear = int(saveLines[0]) selectedMonth = int(saveLines[1]) selectedDay = int(saveLines[2]) except: save = open("save.txt", "w") save.write("{}\n{}\n{}".format(datetime.now().year, datetime.now().month, datetime.now().day)) save.close() save = open("save.txt", "r") saveLines = save.readlines() selectedYear = int(saveLines[0]) selectedMonth = int(saveLines[1]) selectedDay = int(saveLines[2]) #If it's first time that user opened this app or there is no save.txt file, select today else select last selected date self.calendar.setSelectedDate( QDate(selectedYear, selectedMonth, selectedDay)) self.calendar.clicked.connect(self.click)
def actualizarTabla(self): tabla = self.ui.tableMensualidades self.parqueadero.actualizarTablaMensualida(tabla) self.ui.txtFechaEntrada.setDate(QDate.currentDate()) mes = self.ui.txtFechaEntrada.date().month() anio = self.ui.txtFechaEntrada.date().year() dia = self.ui.txtFechaEntrada.date().day() fechaSalida = datetime(anio, mes, dia) fechaSalida = fechaSalida + timedelta(days=31) dia = fechaSalida.date().day mes = fechaSalida.date().month anio = fechaSalida.date().year try: self.ui.txtFechaSalida.setDate(QDate(anio, mes, dia)) except: print("Error en la fecha de salida de mensualidad")
def fill_passport_data(self): cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(f"""SELECT * FROM main.passports WHERE student_id={self.enrollee_id}""") items = cur.fetchone() self.passport_series_line.setText(items['serial_n']) self.pasport_number_line.setText(items['number']) self.who_gave_line.setText(items['given_by']) self.subdivision_code_line.setText(items['code']) self.given_date.setDate(QDate(*map(int, str(items['given_date']).split('-')))) self.index_line.setText(items['mail_index']) self.city_line.setText(items['city']) self.street_line.setText(items['street']) self.house_line.setText(items['house']) self.flat_line.setText(items['apartments']) cur.close()
def on_btn_clear_hor_pressed(self): self.txtId_hor.setText(None) self.txtPesCli_hor.setText(None) self.cbbSer_hor.setCurrentIndex(0) self.cbbPro_hor.setCurrentIndex(0) self.dat_hor.setDate(QDate(2000, 1, 1)) self.cbbHor_hor.setCurrentIndex(0) self.cbbSer_hor.setEnabled(True) self.btnAtu_hor.setEnabled(False) self.btnExc_hor.setEnabled(False) self.btnImp_hor.setEnabled(False) self.btnAge_hor.setEnabled(True) self.btnAge_hor.setStyleSheet("color: #fff;\n" "background-color: #850085;\n") self.listPesCli_hor.setVisible(False) self.cbbHor_hor.clear()
def __init__(self, mw, tribe, db): try: QDialog.__init__(self, mw) self.setWindowTitle('Check in history for ' + tribe) self.setGeometry(100, 150, 900, 550) self.setModal(True) self.grid = QGridLayout() self.cal = Calendar() # get checkin info self.cal.checkins = QDate(2019, 1, 1) self.fillCal(db, tribe) self.grid.addWidget(self.cal, 0, 0) self.setLayout(self.grid) self.show() except Exception: logger.exception('calendarWidget error')
def set_layout(self): #Set up basic Stuff here vbox = QVBoxLayout() group1 = QGroupBox("Employee Update") form1 = QFormLayout() group1.setLayout(form1) #Set Nane self.namelabel = QLabel("Name") self.nameLineEdit = QLineEdit("") self.nameLineEdit.setEnabled(False) form1.setWidget(0, QFormLayout.LabelRole, self.namelabel) form1.setWidget(0, QFormLayout.FieldRole, self.nameLineEdit) #Set Date Label self.datelabel = QLabel("Date Started") self.dateLineEdit = QDateEdit() self.dateLineEdit.setDate(QDate(2021, 1, 1)) self.dateLineEdit.setCalendarPopup(True) form1.setWidget(1, QFormLayout.LabelRole, self.datelabel) form1.setWidget(1, QFormLayout.FieldRole, self.dateLineEdit) # set Time Started self.timestartlabel = QLabel("Time Started") self.updatestartLineEdit = QTimeEdit() # Set time constrain self.updatestartLineEdit.timeChanged.connect(self.connect_start_end) #Add to form Widget form1.setWidget(2, QFormLayout.LabelRole, self.timestartlabel) form1.setWidget(2, QFormLayout.FieldRole, self.updatestartLineEdit) # set Time Ended self.timeendedlabel = QLabel("Time Ended") self.updateendeLineEdit = QTimeEdit() # connect min time of endtime as starttime self.updateendeLineEdit.timeChanged.connect( self.connect_min_time) #you can use lambda function to get 1 line # Add to form Widget form1.setWidget(3, QFormLayout.LabelRole, self.timeendedlabel) form1.setWidget(3, QFormLayout.FieldRole, self.updateendeLineEdit) ##ADD BUTTON self.updatebtn = QPushButton("Update Employee") self.updatebtn.clicked.connect(self.saved_messagebox) ## ADD ITEMS TO LAYOUT vbox.addWidget(group1) vbox.addWidget(self.updatebtn, 0, Qt.AlignHCenter) self.setLayout(vbox)
def baris(self, row): self.lastClick = int(self.table.item(row, 0).text()) print(self.lastClick) print(self.table.item(row, 1).text()) # Nama print(self.table.item(row, 3).text()) # Simpan print(self.table.item(row, 4).text()) # Pinjam self.idG.setText(self.table.item(row, 0).text()) self.nama.setText(self.table.item(row, 1).text()) self.simpan.setText(str(self.table.item(row, 3).text())) self.pinjam.setText(self.table.item(row, 4).text()) a = self.table.item(row, 2).text().split('/') dd = int(a[0]) mm = int(a[1]) yy = int(a[2]) self.tanggal.setDate(QDate(yy, mm, dd))
def set(self, type_, url, data): if not self.db: return if not data: return query = QSqlQuery(self.db) query.prepare("INSERT INTO cache (type, url, data, createdat)" " VALUES (?, ?, ?, ?)") query.addBindValue(type_) query.addBindValue(url) query.addBindValue(data) currentDate = QDate.currentDate() days = QDate(2000, 1, 1).daysTo(currentDate) query.addBindValue(days) query.exec_()
def __init__(self): super().__init__() self.setWindowTitle("My GUI") # add widgets, set properties self.dteDt = QDateTimeEdit(QDate().currentDate(), self) self.dteDt.setCalendarPopup(True) self.dteDt.move(50, 50) self.dteTm = QDateTimeEdit(QTime().currentTime(), self) self.dteTm.move(50, 80) self.dteDtTm = QDateTimeEdit(QDateTime(QDate.currentDate(), QTime.currentTime()), self) self.dteDt.move(50, 110) self.btn = QPushButton("Elapse Time", self) self.btn.move(50, 140) self.btn.clicked.connect(self.evt_btn_clicked)
def sendList(dataDaLavorare) -> list: """ la lista deve essere [ [] ] la tabella sempre piena, quindi rows = 6 ; cols = 7 il primo giorno deve essere un lunedì""" rows = 7 cols = 6 primoDelMese = QDate(dataDaLavorare.year(), dataDaLavorare.month(), 1) lun = MeseGiorniDictGen.iLunedi(primoDelMese)[0] corrente = lun listaGiorni = [] for c in range(cols): listaGiorni.append([]) for r in range(rows): listaGiorni[c].append(corrente) corrente = corrente.addDays(1) # print(listaGiorni) return listaGiorni
def update_date_input(date_input: DateInput, new: DateInput) -> None: # noinspection PyTypeChecker widget: QDateEdit = get_dwidgets()[id(date_input)] widget.blockSignals(True) if date_input.read_only != new.read_only: widget.setReadOnly(new.read_only) if date_input.value != new.value: widget.setDate(QDate(new.value.year, new.value.month, new.value.day)) if date_input.on_input != new.on_input: widget.dateChanged.disconnect() widget.dateChanged[QDate].connect( make_action_catcher(lambda qdt: new.on_input(qdt.toPyDate()))) widget.blockSignals(False)