首页 > 解决方案 > 如何在 QDateEdit 弹出 QCalendarWidget 中添加今天按钮

问题描述

今天按钮是这样的

我的弹出日历小部件的图像:

我的弹出式日历小部件的图像

我正在尝试使用 Python 中的 PyQt5 和日期选择器选项创建简单的 Gui。我需要在弹出的 QCalendarWidget 中的 QDateEdit 中添加今天按钮。

标签: pythonpyqtpyqt5qcalendarwidget

解决方案


您必须通过布局将按钮添加到 QCalendarWidget,并在按下按钮时将 QDate::currentDate() 设置为 QCalendarWidget 的 selectedDate:

import sys

from PyQt5 import QtCore, QtWidgets


class DateEdit(QtWidgets.QDateEdit):
    def __init__(self, parent=None):
        super().__init__(parent, calendarPopup=True)
        self._today_button = QtWidgets.QPushButton(self.tr("Today"))
        self._today_button.clicked.connect(self._update_today)
        self.calendarWidget().layout().addWidget(self._today_button)

    @QtCore.pyqtSlot()
    def _update_today(self):
        self._today_button.clearFocus()
        today = QtCore.QDate.currentDate()
        self.calendarWidget().setSelectedDate(today)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = DateEdit()
    w.show()
    sys.exit(app.exec_())

推荐阅读