PyQt5 QCalendarWidget – 点击的信号

  • Post category:Python

PyQt5是一款基于Python的GUI图形化界面工具包,提供了丰富的组件、类和模块,方便 Python 开发者快速构建美观、实用的界面应用程序。其中 QCalendarWidget 是 PyQt5 中的一个日历组件,支持显示日期、选择日期等功能。本文将详细讲解使用 PyQt5 QCalendarWidget 的点击信号。

QCalendarWidget 的点击信号

在 PyQt5 中,QCalendarWidget 的点击信号可以通过以下代码进行设置:

self.calendar.clicked[QDate].connect(self.date_clicked)

其中,self.calendar 是 QCalendarWidget 控件的对象名,clicked 是信号名,[QDate] 是信号的参数类型,self.date_clicked 是接收信号的槽函数名。

示例一

下面是一个简单的示例,演示如何使用 QCalendarWidget 的点击信号实现日期选择:

from PyQt5.QtWidgets import QApplication, QMainWindow, QCalendarWidget
from PyQt5.QtCore import QDate

class CalendarWidget(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QCalendarWidget")
        self.setGeometry(100, 100, 400, 400)

        self.calendar = QCalendarWidget(self)
        self.calendar.setGeometry(50, 50, 300, 200)

        self.calendar.clicked[QDate].connect(self.date_clicked)

    def date_clicked(self, date):
        print(date.toString())

if __name__ == '__main__':
    app = QApplication([])
    window = CalendarWidget()
    window.show()
    app.exec_()

在上面的代码中,我们创建了一个 CalendarWidget 类,继承自 QMainWindow 类,并添加了 QCalendarWidget 控件。当点击日期时,调用了 self.date_clicked 方法,打印了选择的日期。

示例二

下面是另一个示例,演示如何使用 QCalendarWidget 的点击信号实现日历中的日期标记:

from PyQt5.QtWidgets import QApplication, QMainWindow, QCalendarWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt, QDate

class CalendarWidget(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QCalendarWidget")
        self.setGeometry(100, 100, 400, 400)

        self.calendar = QCalendarWidget(self)
        self.calendar.setGeometry(50, 50, 300, 200)

        self.label = QLabel(self)
        self.label.setAlignment(Qt.AlignCenter)

        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.calendar)
        self.layout.addWidget(self.label)

        self.calendar.clicked[QDate].connect(self.date_clicked)

    def date_clicked(self, date):
        self.label.setText(date.toString("yyyy-MM-dd"))
        self.calendar.setSelectedDate(date)

if __name__ == '__main__':
    app = QApplication([])
    window = CalendarWidget()
    window.show()
    app.exec_()

在上面的代码中,我们创建了一个 CalendarWidget 类,继承自 QMainWindow 类,并添加了 QCalendarWidget 控件和 QLabel 控件。当点击日期时,调用了 self.date_clicked 方法,设置了标记了选中的日期,并在 QLabel 中显示了选中的日期。