PyQt5 QCalendarWidget 获取选定日期

  • Post category:Python

下面我将详细讲解如何使用 PyQt5 的 QCalendarWidget 控件来获取选定日期的完整使用攻略。

1. 安装 PyQt5

首先,你需要安装 PyQt5 库。你可以在命令行中使用 pip 安装:

pip install PyQt5

2. 创建 QCalendarWidget

在使用 QCalendarWidget 控件之前,你需要创建并显示该控件。下面的代码演示了如何创建一个 QCalendarWidget 并将其显示在窗口中:

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

class App(QWidget):
    def __init__(self):
        super().__init__()

        self.calendar = QCalendarWidget(self)
        self.calendar.setGeometry(50, 50, 200, 200)
        self.calendar.selectionChanged.connect(self.on_date_selected)

        self.show()

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

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

在上面的代码中,我们创建了一个名为 “App” 的窗口,并在该窗口中创建了一个 QCalendarWidget 控件。我们将控件的大小设置为 200×200 像素,并使用 geometry() 方法来设置其位置。

我们还将 selectionChanged 信号与 on_date_selected() 方法连接起来,以便在用户选择一个日期时进行处理。

3. 获取选定日期

当用户在 QCalendarWidget 中选择了一个日期时,我们需要获取这个日期并执行相应的操作。下面的代码演示了如何获取选定日期的值:

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

在上面的代码中,我们使用 selectedDate() 方法来获取已选定的日期,然后使用 toString() 方法将其转换为字符串格式。在本例中,我们使用了 “yyyy-MM-dd” 格式来格式化日期。

4. 示例

下面是一个完整的示例代码,该代码创建了一个 PyQt5 应用程序,该程序包含一个 QCalendarWidget 控件和一个文本标签,用户选择一个日期时,文本标签会显示所选日期。

import sys
from PyQt5.QtGui import QTextCursor
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QLabel, QGridLayout


class MyCalendar(QWidget):
    def __init__(self):
        super().__init__()

        self.calendar = QCalendarWidget(self)
        self.calendar.selectionChanged.connect(self.on_date_selected)

        self.label = QLabel(self)
        cursor = QTextCursor(self.label.document())
        cursor.movePosition(QTextCursor.End)
        self.label.setTextCursor(cursor)

        grid = QGridLayout()
        grid.addWidget(self.calendar, 0, 0)
        grid.addWidget(self.label, 1, 0)

        self.setLayout(grid)
        self.setWindowTitle("My Calendar")
        self.resize(300, 300)

    def on_date_selected(self):
        selected_date = self.calendar.selectedDate().toString("yyyy-MM-dd")
        self.label.insertPlainText(selected_date + '\n')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    calendar = MyCalendar()
    calendar.show()
    sys.exit(app.exec_())

在上面的代码中,我们创建了一个名为 “MyCalendar” 的窗口,该窗口包含一个 QCalendarWidget 控件和一个文本标签。我们将 selectionChanged 信号与 on_date_selected() 方法连接起来,以便在用户选择一个日期时将其添加到文本标签中。

这就是有关如何使用 PyQt5 的 QCalendarWidget 控件来获取选定日期的完整攻略。希望这可以对你有所帮助。