PyQt5 QCalendarWidget – 获取当前年份

  • Post category:Python

PyQt5是基于Qt库的一种Python GUI框架,用于开发富交互式的界面,提供了许多GUI控件,其中包括QCalendarWidget控件。QCalendarWidget控件是一个日历工具,它可以方便地让用户选择日期/时间。本篇攻略将详细讲解如何使用PyQt5 QCalendarWidget控件获取当前年份。

步骤1:创建QCalendarWidget控件

在PyQt5中,我们可以使用QCalendarWidget构造函数创建一个QCalendarWidget控件。以下是创建一个简单的QCalendarWidget控件的示例代码:

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

class CalendarExample(QWidget):

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

        self.initUI()


    def initUI(self):

        cal = QCalendarWidget(self)
        cal.setGridVisible(True)
        cal.move(20, 20)
        cal.clicked[QDate].connect(self.showDate)

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


    def showDate(self, date):

        print(date.toString())


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = CalendarExample()
    sys.exit(app.exec_())

在上述代码中,我们首先在__init__()方法中创建了一个QCalendarWidget控件。在initUI()方法中,我们设置了控件的大小和位置,以及设置了当前选中日期改变时调用的回调函数showDate()showDate()函数将选中日期的字符串形式输出到终端。

步骤2:获取当前年份

我们可以通过QCalendarWidget的selectedDate()方法获取当前选中日期,然后通过year()方法获取该日期的年份。以下是获取当前年份的示例代码:

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

class CalendarExample(QWidget):

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

        self.initUI()


    def initUI(self):

        cal = QCalendarWidget(self)
        cal.setGridVisible(True)
        cal.move(20, 20)
        cal.clicked[QDate].connect(self.showYear)  # 更改回调函数为showYear方法

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


    def showYear(self, date):

        year = date.year()
        print(year)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = CalendarExample()
    sys.exit(app.exec_())

showYear()方法中,我们通过date对象获取当前选中日期的年份,并将年份值输出到终端。

示例2:通过QCalendarWidget的信号获取当前年份

除了使用selectedDate()方法获取当前选中日期来推断年份外,我们还可以使用QCalendarWidget预定义的信号。例如,我们可以使用currentPageChanged()信号来获取当前日历页的日期,并从中提取年份。以下是使用信号获取当前年份的示例代码:

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

class CalendarExample(QWidget):

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

        self.initUI()


    def initUI(self):

        cal = QCalendarWidget(self)
        cal.setGridVisible(True)
        cal.move(20, 20)
        cal.currentPageChanged[QDate].connect(self.showYear)  # 更改回调函数为showYear方法

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


    def showYear(self, date):

        year = date.year()
        print(year)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = CalendarExample()
    sys.exit(app.exec_())

initUI()方法中,我们通过currentPageChanged()信号连接到showYear()回调函数,该函数中提取了当前页的日期并输出当前年份。

通过以上两个示例,我们可以看出,在PyQt5中获取QCalendarWidget控件当前年份有多种方式。开发人员可以根据实际需求选择合适的方式进行开发。