PyQt5 – QCalendarWidget

  • Post category:Python

关于Python的“PyQt5 – QCalendarWidget”的完整使用攻略如下:

QCalendarWidget 简介

QCalendarWidget 是一个日历控件,用于选择日期。日历控件支持多种视图模式,如月、周和年视图。

使用步骤

  1. 导入 PyQt5.QtWidgets 中的 QCalendarWidget 类。
from PyQt5.QtWidgets import QCalendarWidget
  1. 创建 QCalendarWidget 类的实例。
cal = QCalendarWidget()
  1. 显示日历控件。
cal.show()

QCalendarWidget 的常用方法

  1. setGridVisible(): 设置是否显示日期网格,默认是显示的。
cal.setGridVisible(False)  # 隐藏网格
cal.setGridVisible(True) # 显示网格
  1. setFirstDayOfWeek(): 设置日历控件每周的第一天是哪一天。
cal.setFirstDayOfWeek(QtCore.Qt.Sunday)  # 周日为第一天
cal.setFirstDayOfWeek(QtCore.Qt.Monday)  # 周一为第一天
  1. setSelectedDate(): 设置选中的日期。
cal.setSelectedDate(QtCore.QDate.currentDate()) # 将当前日期设置为选中状态
  1. selectedDate(): 获取选中的日期。
date = cal.selectedDate().toString('yyyy-MM-dd')
print(date) # 输出选中的日期

QCalendarWidget 的常用信号

日历控件的常用信号有 selectionChanged(), activated(), currentPageChanged() 等。

  1. selectionChanged(): 日历控件中选中的日期改变时发出的信号。
cal.selectionChanged.connect(self.on_selection_changed) # 绑定信号与槽
def on_selection_changed(self):
    date = cal.selectedDate().toString('yyyy-MM-dd')
    print(date) # 输出选中的日期
  1. activated(): 日历控件中的日期被双击时发出的信号。
cal.activated.connect(self.on_activated) # 绑定信号与槽
def on_activated(self, date):
    print(date) # 输出选中的日期

示例

示例一:显示日历控件并设置选中的日期

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

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        cal = QCalendarWidget(self)
        cal.setSelectedDate(QDate(2021, 8, 3))  # 设置选中日期

        vbox = QVBoxLayout()
        vbox.addWidget(cal)

        self.setLayout(vbox)
        self.setWindowTitle('QCalendarWidget 示例一')
        self.setGeometry(300, 300, 350, 300)
        self.show()

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

示例二:绑定日历控件的 selectionChanged 信号

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

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        cal = QCalendarWidget(self)
        cal.selectionChanged.connect(self.on_selection_changed)  # 绑定信号与槽

        vbox = QVBoxLayout()
        vbox.addWidget(cal)

        self.setLayout(vbox)
        self.setWindowTitle('QCalendarWidget 示例二')
        self.setGeometry(300, 300, 350, 300)
        self.show()

    def on_selection_changed(self):
        date = cal.selectedDate().toString('yyyy-MM-dd')
        print(date)  # 输出选中的日期

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

以上就是 Python 的“PyQt5 – QCalendarWidget”完整的使用攻略。