课设要求图形化界面,使用 Qt Designer 设计了UI,PyQt5转为.py文件,并在此基础上进行了一些UI方面改进。笔记一则。
控件UI设计
- 初始需求就是设计一个能够输入日期的控件。确定为组件dateEdit,效果如下:
- 设置可选择日期范围:
加入setMinimumDate和setMaximumDate方法;
其内参数为一个QDate.currentDate()的返回值,并可以通过.addDays(-365)方法进行日期加减操作。
实际使用完整控件代码如下,示例查询范围为三年前至今。 - 设置日历样式直观选择
加入 setCalendarPopup(True) 方法,并将参数设为True。
效果如下:
部分代码如下
self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_2.setObjectName("label_2")
self.horizontalLayout.addWidget(self.label_2, 0, QtCore.Qt.AlignHCenter)
self.dateEdit = QtWidgets.QDateEdit(self.verticalLayoutWidget_2)
self.dateEdit.setObjectName("dateEdit")
self.horizontalLayout.addWidget(self.dateEdit)
# 设置日期最大值与最小值,在当前日期的基础上,可查三年前至当天
self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365 * 3))
self.dateEdit.setMaximumDate(QDate.currentDate())
# 设置日历控件允许弹出
self.dateEdit.setCalendarPopup(True)
控件输入读取
- 输入日期的读取:
使用 self.dateEdit.date() 方法;
返回:date类型的属性值
转为string类型:使用toString()方法
得到2021-07-01形式:toString()方法参数设为Qt.ISODate
self.dateChoice = self.dateEdit.date() # 选择日期
print(self.dateChoice,type(self.dateChoice))
##输出
##PyQt5.QtCore.QDate(2018, 7, 1) <class 'PyQt5.QtCore.QDate'>
- 使用toString()方法
self.dateChoice = self.dateEdit.date().toString() # 选择日期
print(self.dateChoice,type(self.dateChoice))
##输出
##周日 7月 1 2018 <class 'str'>
- toString()方法参数设定为Qt.ISODate即可得到 YYYY-mm-dd形式的字符串表达
self.dateChoice = self.dateEdit.date().toString(Qt.ISODate) # 选择日期
print(self.dateChoice,type(self.dateChoice))
##输出
##2018-07-01 <class 'str'>
- toString()方法及其参数的选择:
未放过多精力查阅,但以上参数确实可行。挖个坑吧。 - ISODate 类型:
。。。