日历类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())