1、QDateTimeEdit-----调节日期时间的控件,日期包括年月日、时间包括时分秒;可以分开编辑也可以整体编辑。
最小是1752年9月14日;最大是9999年。
构造函数:默认情况下有日期范围。
2、QDateTime----QDate----QTime简单使用:
日期时间对象的构造:
def setup_ui(self):
# dt = QDateTime(2018, 12, 12, 12, 30)
# print(dt)
# QDateTimeEdit(dt, self)
# 获取当前的日期时间
dt = QDateTime.currentDateTime()
QDateTimeEdit(dt, self)
单独调整日期时间(加年月日等)、计算时间差:距离世界标准时间的偏差offsetFromUtc()。
计算两个日期对象所差的天数:
QDate:可以获取当前的日期、年月日等(第几日、几年)。
QTime:
计时功能:
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("日期时间的学习")
self.resize(500, 500)
self.setup_ui()
def setup_ui(self):
# dt = QDateTime(2018, 12, 12, 12, 30)
# print(dt)
# QDateTimeEdit(dt, self)
# 获取当前的日期时间
dt = QDateTime.currentDateTime()
# 与世界时间间隔8小时
print(dt.offsetFromUtc() // 3600)
# 并未改变对象本身,而是新生成了一个对象
dt = dt.addYears(2)
QDateTimeEdit(dt, self)
time = QTime.currentTime()
time.start()
# 获取从开始计时时刻到现在所经历的时间
btn = QPushButton(self)
btn.setText("测试")
btn.move(200, 200)
# 时间调整为s
btn.clicked.connect(lambda: print(time.elapsed() / 1000))
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = Window()
window.resize(500, 500)
window.show()
sys.exit(app.exec_())
3、QDataTimeEdit----- 构造函数:可以在参数中添加额外参数.
def setup_ui(self):
# 年月日,当前时间
#dte = QDateTimeEdit(QDate.currentDate(), self)
# 只想展示当前时间
#dte = QDateTimeEdit(QTime.currentTime(), self)
# # 只想展示当前日期
dte = QDateTimeEdit(QDate.currentTime(), self)
dte.move(100, 100)
section有固定的时间段,有的只展示时分秒、有的只展示年月日(每个元素是一个独立的section)。(构造函数传递不同的参数,所包含的section也是不同的)
4、QDataTimeEdit-----显示格式
通过不同的字符表示不同的section,
def setup_ui(self):
dte = QDateTimeEdit(QDate.currentDate(), self)
dte.move(100, 100)
# 设置格式,分、秒、毫秒
dte.setDisplayFormat("yy-MM-dd & m: ss: zzz")
print(dte.displayFormat())
5、section操作:
细节:控件失去焦点之后在获取焦点会重置section对应的索引。
def setup_ui(self):
# # 只想展示当前日期
dte = QDateTimeEdit(QDate.currentDate(), self)
dte.move(100, 100)
# 设置格式,分、秒、毫秒
dte.setDisplayFormat("yy-MM-dd & m: ss: zzz")
print(dte.displayFormat())
# 获取当前section的总个数
print(dte.sectionCount())
test_btn = QPushButton(self)
test_btn.setText("测试按钮")
test_btn.move(150, 150)
# 当前section的索引
#test_btn.clicked.connect(lambda: print(dte.currentSectionIndex()))
# 设置当前索引为3
#test_btn.clicked.connect(lambda: print(dte.setCurrentSectionIndex(3)))
def test():
print("xxx")
dte.setFocus()
#dte.setCurrentSectionIndex(3)
# 指定枚举值获取索引,容错率更高一点
dte.setCurrentSection(QDateTimeEdit.DaySection)
# 或置指定部分对应的文本
print(dte.sectionText(QDateTimeEdit.DaySection))
# 不能在获取焦点,它会将原来的效果重置,恢复到原来的初始位置
test_btn.clicked.connect(test)