PyQt5 QDateTimeEdit – 只设置QDate

  • Post category:Python

当使用PyQt5时,QDateTimeEdit是一个用于编辑日期和时间的非常有用的小部件。在很多情况下,我们只需要设置QDate(年/月/日),这时应该怎么做呢?下面我将为你详细讲解这个问题的完整解决方案。

设置只选择日期

如果你只需要选择日期,可以将QDateTimeEdit设置为Date模式。下面是一个示例:

from PyQt5.QtWidgets import QDateTimeEdit, QApplication
from PyQt5.QtCore import QDate

app = QApplication([])

# 创建一个QDateTimeEdit对象,并将模式设置为只选择日期
date_wid = QDateTimeEdit(QDate.currentDate())
date_wid.setDisplayFormat('yyyy-MM-dd')
date_wid.setCalendarPopup(True)
date_wid.setDateTimeRange(QDate(1900, 1, 1), QDate.currentDate())
date_wid.setCalendarWidget(None)  # 关闭日历

date_wid.show()
app.exec_()

在这个示例中,我们创建了一个QDateTimeEdit小部件,并将其设置为只选择日期。setDisplayFormat(‘yyyy-MM-dd’)设置了日期的显示格式,而setCalendarPopup(True)则启用了弹出式日历。使用setDateTimeRange(QDate(1900, 1, 1), QDate.currentDate())为小部件设置了日期范围。最后,我们使用setCalendarWidget(None)关闭了日历。

获取所选日期的值

一旦你选择了一个日期,你会想知道所选日期的值。使用text()方法可以很容易地获取选定的日期值,如下所示:

print(date_wid.text())

这将打印出选择的日期。

示例2:从日期字符串中设置值

有时你需要在程序中使用预先选定的日期。在这种情况下,你可以从字符串中解析日期,并将其设置为QDateTimeEdit小部件的值。以下是一个示例:

from PyQt5.QtWidgets import QDateTimeEdit, QApplication
from PyQt5.QtCore import QDate, QDateTime

app = QApplication([])

# 解析日期字符串
default_date_str = '2020-12-25'
default_date = QDateTime.fromString(default_date_str, 'yyyy-MM-dd')

# 创建一个QDateTimeEdit对象,并将模式设置为只选择日期
date_wid = QDateTimeEdit(default_date.date())
date_wid.setDisplayFormat('yyyy-MM-dd')
date_wid.setCalendarPopup(True)
date_wid.setDateTimeRange(QDate(1900, 1, 1), QDate.currentDate())
date_wid.setCalendarWidget(None)  # 关闭日历

date_wid.show()
app.exec_()

在这个示例中,我们首先解析日期字符串并将其转换为QDateTime对象。然后,我们使用default_date.date()获取只包含日期信息的QDate对象,并将其用作QDateTimeEdit的初始值。

使用这个示例,在打开小部件时,它将预先填充默认的日期(在本例中是2020-12-25)。