PyQt5 QCalendarWidget selectedDate изменение формата - PullRequest
0 голосов
/ 17 мая 2018

Я пытался использовать QCalendarWidget, чтобы выбрать даты, которые я буду использовать позже.

Итак, я создал виджет, он показывает, и все выглядит хорошо. Затем я печатаю выбранную дату в текстовом браузере для тестирования и вижу, что формат даты плохой.

Это код, соответствующий данной проблеме:

from PyQt5 import QtGui, QtCore, QtWidgets, uic

class Window(QtWidgets.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.ui = uic.loadUi('rent_creation.ui', self)
        #the widgets are called calendarWidget_start_date_2 and calendarWidget_end_date_2
        self.ui.activate_thescript.clicked.connect(self.activate_script)
        self.show()

    def activate_script(self):
        global start_date
        global end_date
        start_date = self.ui.calendarWidget_start_date_2.selectedDate().toString()
        end_date = self.ui.calendarWidget_end_date_2.selectedDate().toString()
        #print data in text browser
        text = "Start date: %s \n End date: %s \n" %(start_date, end_date)
        self.ui.textBrowser.setText(text)

start_date = QtCore.QDate.currentDate()
end_date = QtCore.QDate.currentDate()

def run():     
    app = QtWidgets.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())


run()

Результат:

Start date: Wed May 9 2018 
End date: Tue May 15 2018

Мне нужен формат даты в результате:

Start date: 2018-05-09 
End date: 2018-05-15

Спасибо за помощь:)

(я использую глобальные переменные только для примера, очевидно, я выкидываю их из своего реального кода)

1 Ответ

0 голосов
/ 17 мая 2018

Вы должны передать toString() в формате "yyyy-MM-dd":

...
start_date = self.ui.calendarWidget_start_date_2.selectedDate().toString("yyyy-MM-dd")
end_date = self.ui.calendarWidget_end_date_2.selectedDate().toString("yyyy-MM-dd")
...

или QtCore.Qt.ISODate:

...
start_date = self.ui.calendarWidget_start_date_2.selectedDate().toString(QtCore.Qt.ISODate)
end_date = self.ui.calendarWidget_end_date_2.selectedDate().toString(QtCore.Qt.ISODate)
...
...