51-输入和显示-日期时间类及控件- 日历类QCalender

文章介绍了QCalendar类在PySide6中的使用,包括构造方法、常用方法如name()、dateFromParts()等,以及如何创建和设置日期。同时提供了一个QCalendarWidget的例子,展示了如何在GUI中集成日历功能,用户可以选择日期并更新显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日历类QCalender

日历类QCalender构造方法

日历类QCalendar 主要用于确定纪年法,当前通用的是公历纪年法,这也是默认值QCalendar 类在 PySide6,QtCore 块中。

用QCalendar 类创建日历实例的方法如下:

from PySide6.QtCore import QCalendar

QCalendar(self)-> None
QCalendar(QCalendar: PySide6.QtCore.QCalendar)-> None
QCalendar(id: PySide6.QtCore.QCalendar.SystemId)-> None
QCalendar(name: str)-> None
QCalendar(system: PySide6.QtCore.QCalendar.System)-> None 
  • name 可以取以下值(均是字符串):

    Julian
    Jalali
    IslamicCivil
    Milankovic
    Gregorian
    islamicc
    Islamic
    gregory
    Persian
    islamic-civil
    
  • system是QCalendar,System 的枚举值,可取以下值,默认值是 QCalendar.System.Gregorian

    • QCalendar.System.Gregorian
    • QCalendar.System.Julian
    • QCalendar.System.Milankovic
    • QCalendar.System.Jalali
    • QCalendar.System.IslamicCivil
日历类QCalendar 的常用方法

日历类QCalendar 的常用方法如表所示

  • 用name()方法获取当前使用的日历纪年法
  • 用dateFromParts(year,month,day)方法可以创建一个 QDate对象。
QCalendar的方法及参数类型返回值的类型说明
name()str获取当前使用的日历纪年法
[static]availableCalendars()ListCstr]获取可以使用的日历纪年法
dateFromParts(year: int.month; int,day: int)QDate返回指定年、月、日构成的日期
dayOfWeek(QDate)int获取指定日期在一周的第几天
daysInMonth(month:int,year:int=None)int获取指定年指定月的总天数
daysInYear(year:int)int获取指定年中的总天数
isDateValid(year:int,month: int,day:int)bool获取指定的年、月、日是否有效
isGregorian()bool获取是否是公历纪年
isLeapYear(year: int)bool获取某年是否是闰年
isLunar()bool获取是否是月历
isSolar()bool获取是否是太阳历
maximumDaysInMonth()int获取月中最大天数
maximumMonthsInYear()int获取年中最大月数
minimumDaysInMonth()int获取月中最小天数
日历类QCalendar例子
# -*- coding: UTF-8 -*-
# File date: Hi_2023/2/28 23:03
# File_name: 01-QCalendarWidget 例子.py


import sys
from PySide6 import QtCore
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from PySide6.QtCore import QDate


class CalendarExample(QWidget):
    def __init__(self):
        super(CalendarExample,self).__init__()
        self.setGeometry(100,100,400,350)
        self.setWindowTitle('Calendar 例子')
        layout = QVBoxLayout()
        self.dateTimeEdit = QDateTimeEdit(self)
        self.dateTimeEdit.setCalendarPopup(True)

        self.cal = QCalendarWidget(self)
        self.cal.setMinimumDate(QDate(1980,1,1))
        self.cal.setMaximumDate(QDate(3000,1,1))
        self.cal.setGridVisible(True)
        self.cal.setSelectedDate(QDate(2010,1,30))
        self.cal.setHorizontalHeaderFormat(QCalendarWidget.LongDayNames)
        # self.cal.setFirstDayOfWeek(Qt.Wednesday)
        self.cal.setFirstDayOfWeek(Qt.Wednesday)
        self.cal.move(20,20)

        self.label = QLabel('此处会显示选择日期信息')

        self.cal.clicked.connect(lambda: self.showDate(self.cal))
        self.dateTimeEdit.dateChanged.connect(lambda x: self.cal.setSelectedDate(x))
        self.cal.clicked.connect(lambda x: self.dateTimeEdit.setDate(x))

        layout.addWidget(self.dateTimeEdit)
        layout.addWidget(self.cal)
        layout.addWidget(self.label)
        self.setLayout(layout)

    def showDate(self,cal):
        date = cal.selectedDate().toString("yyyy-MM-dd dddd")
        month = cal.monthShown()
        year = cal.yearShown()
        _str ='当前选择日期: %s;\n当前选择月份: %s;\n当前选择年份: %s;'%(date,month,year)
        self.label.setText(_str)


if __name__ =='__main__':
    app = QApplication(sys.argv)
    demo = CalendarExample()
    demo.show()
    sys.exit(app.exec())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值