一、日历类
日历类 QCalendar 主要用于确定纪年法,当前通用的是公历纪年法,这也是默认值。QCalendar 类在 PySide6.QtCore 模块中。
我们可以在终端中使用 pip 安装 pyside6 模块。
pip install pyside6
用 QCalendar 类创建日历实例的方法如下:
QCalendar()
QCalendar(name:str)
QCalendar(system:QCalendar.System)
其中,name 可以取值如下:
'Julian'
'Jalali'
'Islamic Civil'
'Milankovic'
'Gregorian'
'islamicc'
'Islamic'
'gregory'
'Persian'
'islamic-civil'
system 是 QCalendar.System 的枚举值,可取值如下:
QCalendar.System.Gregorian # 默认值
QCalendar.System.Julian
QCalendar.System.Milankovic
QCalendar.System.Jalali
QCalendar.System.IslamicCivil
日历类的常用方法如下:
# 实例方法
name() -> str # 获取当前使用的日历纪年法
dateFromParts(year:int, month:int, day:int) -> datetime # 根据年月日创建日期
dayOfWeek(date:QDate) -> int # 获取指定日期在一周的第几天
daysInMonth(month:int, year:int=QCalendar.Unspecified) -> int # 获取指定年指定月份的总天数
daysInYear(year:int) -> int # 获取指定年份的总天数
isDateValid(year:int, month:int, day:int) -> bool # 检查指定年月日是否有效
isGregorian() -> bool # 检查是否是公历
isLeapYear(year) -> bool # 检查是否是闰年
isLunar() -> bool # 检查是否是农历
isSolar() -> bool # 检查是否是阳历
minimumDaysInMonth() -> int # 获取月中最小天数
maximumDaysInMonth() -> int # 获取月中最大天数
maximumMonthsInYear() -> int # 获取年中最大月数
# 静态方法
availableCalendars() -> List[str] # 获取可用的日历纪年法
二、日历控件
日历控件 QCalendarWidget 主要用于显示日期、星期和周数。可以设置日历控件显示的最小日期和最大日期,还可以设置日历表头的样式。
用 QCalendarWidget 类创建实例对象的方法如下:
QCalendarWidget(parent:QWidget=None)
其中 parent 是 窗口 或者 容器类控件 。
CalendarWidget 控件常用的方法及其说明如下:
# 实例方法
selectedDate() -> QDate # 获取选中的日期
setCalendar(calendar:QCalendar) -> None # 设置日历
calendar() -> QCalendar # 获取日历
setDateTextFormat(date:QDate, format:QTextFormat) -> None # 设置日期的显示格式
dateTextFormat() -> QTextFormat # 获取日期的显示格式
setFirstDayOfWeek(dayOfWeek:Qt.DayOfWeek) -> None # 设置一周的第一天显示的是哪一天
firstDayOfWeek() -> Qt.DayOfWeek # 获取一周的第一天显示的是哪一天
isGridVisible() -> bool # 是否显示日历网格
isNavigationBarVisible() -> bool # 是否显示导航栏
setHorizontalHeaderFormat(format:QCalendarWidget.HorizontalHeaderFormat) -> None # 设置水平表头的格式
setVerticalHeaderFormat(format:QCalendarWidget.VerticalHeaderFormat) -> None # 设置垂直表头的格式
setMinimumDate(date:QDate) -> None # 设置日历控件可选的最小日期
minimumDate() -> QDate # 获取日历控件可选的最小日期
setMaximumDate(date:QDate) -> None # 设置日历控件可选的最大日期
maximumDate() -> QDate # 获取日历控件可选的最大日期
setSelectionMode(mode:QCalendarWidget.SelectionMode) -> None # 设置选择模式
monthShown() -> int # 获取显示的月份
yearShown() -> int # 获取显示的年份
# 槽函数
setSelectedDate(date:QDate) -> None # 设置选中的日期
setCurrentPage(year:int, month:int) -> None # 设置当前显示的年和月
setGridVisible(show:bool) -> None # 设置日历网格是否可见
setDateRange(min:QDate, max:QDate) -> None # 设置日历控件可选的日期范围
setNavigationBarVisible(visible:bool) -> None # 设置导航栏是否可见
showSelectedDate() -> None # 显示选中的日期
showPreviousMonth() -> None # 显示上一个月的日历
showNextMonth() -> None # 显示下一个月的日历
showPreviousYear() -> None # 显示上一年的日历
showNextYear() -> None # 显示下一年的日历
showToday() -> None # 显示当前日期的日历
用 setSelectionMode(QCalendarWidget.SelectionMode)
方法可以设置选择日期的模式,其中参数可选值如下:
QCalendarWidget.SelectionMode.NoSelection # 不允许选择
QCalendarWidget.SelectionMode.SingleSelection # 单选
用 setVerticalHeaderFormat(QCalendarWidget.VerticalHeaderFormat)
方法可以设置竖直表头的格式,其中参数QCalendarWidget.VerticalHeaderFormat可以取值如下:
QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers # 标准格式的周数
QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader # 隐藏周数
用 setHorizontalHeaderFormat(QCalendarWidget.HorizontalHeaderFormat)
方法可以设置水平表头的格式,其中参数QCalendarWidget.HorizontalHeaderFormat可以取值如下:
QCalendarWidget.HorizontalHeaderFormat.SingleLetterDayNames # 用单个字母代替全拼,如M代表Monday
QCalendarWidget.HorizontalHeaderFormat.ShortDayNames # 用缩写代替全拼,如Mon代表Monday
QCalendarWidget.HorizontalHeaderFormat.LongDayNames # 全名
QCalendarWidget.HorizontalHeaderFormat.NoHorizontalHeader # 隐藏表头
用 setFirstDayOfWeek(Qt.DayOfWeek)
方法可以设置一周中哪天排在最前面,其中参数 Qt.DayOfWeek 可以取Qt.Monday ~ Qt.Sunday。
CalendarWidget 控件常用的信号及其说明如下:
activated(date:QDate) # 日期激活(双击)时发射信号
clicked(date:QDate) # 日期被点击时发送信号
currentPageChanged(year:int, month:int) # 月视图被切换时发射信号
selectionChanged() # 选择日期发生改变发射信号
import sys
from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QCalendarWidget
from PySide6.QtCore import QDate
from PySide6.QtGui import Qt
class MyWidget(QWidget):
def __init__(self):
# 1.调用父类Qwidget类的__init__()方法
super().__init__()
# 2.调用setupUi()方法初始化页面
self.setup_ui()
def setup_ui(self):
# 1.设置窗口对象大小
self.resize(700, 500)
# 2.创建日历控件
calendarWidget = QCalendarWidget(self)
calendarWidget.resize(400, 400)
# 3.设置最小日期
calendarWidget.setMinimumDate(QDate(2000, 1, 1))
# 4.设置最大日期
calendarWidget.setMaximumDate(QDate(2999, 12, 31))
# 5.设置一周的第一天
calendarWidget.setFirstDayOfWeek(Qt.DayOfWeek.Sunday)
# 6.设置是否显示网格
calendarWidget.setGridVisible(True)
# 7.设置选择模式
calendarWidget.setSelectionMode(QCalendarWidget.SelectionMode.SingleSelection)
# 8.设置水平头部模式
calendarWidget.setHorizontalHeaderFormat(QCalendarWidget.HorizontalHeaderFormat.LongDayNames)
# 9.设置对齐方式
calendarWidget.setVerticalHeaderFormat(QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader)
# 10.设置是否显示导航栏
calendarWidget.setNavigationBarVisible(True)
# 11.设置是否可以编辑日期
calendarWidget.setDateEditEnabled(True)
# 12.设置编辑日期的最大间隔
calendarWidget.setDateEditAcceptDelay(30)
# 13.获取选中的日期
print(calendarWidget.selectedDate())
# 14.定义信号与槽的连接
calendarWidget.clicked.connect(self.clicked)
calendarWidget.activated.connect(self.activated)
calendarWidget.selectionChanged.connect(self.selectionChanged)
calendarWidget.currentPageChanged.connect(self.currentPageChanged)
def clicked(self, date):
print("你选中的日期为:", date)
def activated(self, date):
print("你激活的日期为:", date)
def selectionChanged(self):
print("选中的日期发生改变了,")
def currentPageChanged(self, year, money):
print(f"你选中的日期在为【{year}】-【{money}】月")
if __name__ == "__main__":
# 1.创建一个QApplication类的实例
app = QApplication(sys.argv)
# 2.创建一个窗口
window = MyWidget()
# 3.展示窗口
window.show()
# 4.进入程序的主循环并通过exit()函数确保主循环安全结束
sys.exit(app.exec())
标签:calendarWidget,控件,None,12,int,日历,日期,QCalendarWidget
From: https://www.cnblogs.com/FlurryHeart/p/18644755