PyQt5 QCalendarWidget 显示选定的日期

  • Post category:Python

当我们需要在PyQt5程序中使用日期选择控件时,可以使用QCalendarWidget类。在本文中,将详细介绍Python中如何使用PyQt5 QCalendarWidget显示选定的日期。

安装PyQt5

如果你还没有安装PyQt5,可以通过以下命令安装:

pip install PyQt5

显示QCalendarWidget

要将QCalendarWidget添加到GUI界面中,请按照以下步骤操作:

1.从PyQt5.QtWidgets模块导入QCalendarWidget

from PyQt5.QtWidgets import QCalendarWidget

2.创建一个QCalendarWidget控件对象

calendar_widget = QCalendarWidget()

3.将该对象添加到GUI界面中的布局中

layout.addWidget(calendar_widget)

现在,当我们运行GUI程序时,可以在布局中看到QCalendarWidget控件。

获取选择的日期

要获取用户选择的日期,请执行以下操作:

1.将选择日期的信号(selectionChanged)连接到槽函数中

calendar_widget.selectionChanged.connect(self.get_date)

2.在槽函数中使用QCalendarWidget.selectedDate()方法获取选择的日期

def get_date(self):
    selected_date = self.calendar_widget.selectedDate()
    print(selected_date.toString("yyyy-MM-dd"))

在这个例子中,程序使用选定的日期更新了标准输出。

完整示例1

下面是一个完整的示例代码,它创建了一个具有QCalendarWidget控件的GUI界面,并在用户选择日期时打印所选日期:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QCalendarWidget
import sys


class DatePicker(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        layout = QVBoxLayout(self)

        self.calendar_widget = QCalendarWidget()
        layout.addWidget(self.calendar_widget)

        self.calendar_widget.selectionChanged.connect(self.get_date)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('PyQt5 QCalendarWidget')
        self.show()

    def get_date(self):
        selected_date = self.calendar_widget.selectedDate()
        print(selected_date.toString("yyyy-MM-dd"))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    picker = DatePicker()
    sys.exit(app.exec_())

完整示例2

在这个例子中,我们将选定的日期更新到GUI界面上的标签中:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QCalendarWidget, QLabel
import sys


class DatePicker(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        layout = QVBoxLayout(self)

        self.calendar_widget = QCalendarWidget()
        layout.addWidget(self.calendar_widget)

        self.calendar_widget.selectionChanged.connect(self.get_date)

        self.label = QLabel()
        layout.addWidget(self.label)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('PyQt5 QCalendarWidget')
        self.show()

    def get_date(self):
        selected_date = self.calendar_widget.selectedDate()
        self.label.setText(selected_date.toString("yyyy-MM-dd"))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    picker = DatePicker()
    sys.exit(app.exec_())

在这个例子中,程序使用PyQt5中的QLabel控件创建了一个标签,并使用选定的日期更新了标签的文本。