知识回顾
1.掌握了Qcombobox下拉框,载入、配置(可编辑、不可编辑)
2.掌握联动的思想(省与市的连动),主要用到actived信号
一、案例目标
案例:日历控件的使用
1.制作一个垂直布局(盒子模型)
2.载入一个日历控件Qcalendarwidget和一个qlabel控件
3.要求在点击日历控件的日期的时候,能够将获取到的日期显示到我们的label上
效果图
二、开发思路
- QCalendarWidget日历控件的使用
1.从库文件PyQt5.QtWidgets中导入日历控件
2.对日历控件的实例化
cal=QCalendarWidget()
这里实例化的时候没有载入父容器,我们需要在后期将其载入父容器。
- 盒子模型
#盒子模型,垂直布局
vlo=QVBoxLayout(self) 实例化布局对象
vlo.addWidget(cal) 加入控件
- 字体设置
1.导入字体类
from PyQt5.QtGui import QFont
2.对字体进行实例化,以及将实例化对象载入使用
lbl.setFont(QFont("华文行楷",20))
- 日期类型的载入
从PyQt5的核心库中载入日期类Qdate
from PyQt5.QtCore import Qdate
默认的有实例的日期显示格式
PyQt5.QtCore.QDate(2019, 10, 29)
三、相关技巧
对日期进行格式化的技巧
问题是在我们的槽方法中无法对日期进行代码提示,关键的技巧就是对参数重新格式化为QDate类型就可以了。
格式化日期使用toString 方法来实现。
实现的时候,我们有两种方法:
方法一:使用y表示年的一位,M表示月,d表示日
mydate.toString("yyyy年MM月dd日")
方法二:使用系统中的已经定义好的方式
这种方式,实际上是利用系统中已有的枚举类的方法来实现的。
mydate.toString(Qt.ISODate)或者 mydate.toString(1)
四、总结强调
1.掌握日历控件QCalendarWidget的载入与配置。
2.掌握日历控件的信号控制。
3.掌握日期格式化的几种方法。
本节教程源代码:
import sys from PyQt5.QtWidgets import QApplication,QWidget,QCalendarWidget,QLabel,QVBoxLayout from PyQt5.QtGui import QFont from PyQt5.QtCore import QDate,Qt #实现一个日历控件 class MyClass(QWidget): def __init__(self): super(MyClass, self).__init__() self.initUI() def initUI(self): self.setWindowTitle("刘金玉编程") self.setGeometry(300,100,400,300) cal=QCalendarWidget() cal.clicked[QDate].connect(self.myCalendar) self.lbl=QLabel("这里显示日期") self.lbl.setFont(QFont("华文行楷",20)) #盒子模型 vlo=QVBoxLayout(self) vlo.addWidget(cal) vlo.addWidget(self.lbl) self.show() def myCalendar(self,d): mydate=QDate(d) self.lbl.setText(mydate.toString(1)) if __name__=="__main__": app=QApplication(sys.argv) mc=MyClass() app.exec_()