目录

1、QCalendar日历类

2、QDateTimeEdit时间类


1、QCalendar日历类

QCalendar是一个日历控件,它提供了一个基于月份的视图,允许用户通过鼠标或键盘选择日期,默认选中的是今天的日期。也可以对日历的日期范围进行规定。

Qt Company中日历组件效果

QCalendar类中的常用方法如下表所示:

通个示例了解QCalendar日历类,示例效果如下所示:

示例中有日历控件和标签控件,当前选定的日期显示在标签控件中。创建QCalendarWidget组件,并设置该日历控件的最大日期和最小日期。从窗口组件中选定一个日期,会发射一个QCore.QDate信号,将此信号连接到用户定义的showDate()槽函数。通过调用selectedDate()方法检索所选定的日期,然后将日期对象转换为指定格式字符串并将其设置为标签控件内容。

实现代码如下所示:

import sys
from PyQt5 import QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDateclass CalendarExample( QWidget):def __init__(self):super(CalendarExample, self).__init__()self.initUI()def initUI(self): self.cal =  QCalendarWidget(self)self.cal.setMinimumDate(QDate(1980, 1, 1))self.cal.setMaximumDate(QDate(3000, 1, 1))self.cal.setGridVisible(True)self.cal.move(20, 20)self.cal.clicked[QtCore.QDate].connect(self.showDate)self.lbl =  QLabel(self)date = self.cal.selectedDate()self.lbl.setText(date.toString("yyyy-MM-dd dddd"))self.lbl.move(20, 300)self.setGeometry(100,100,400,350)self.setWindowTitle('Calendar 例子')def showDate(self, date): self.lbl.setText(date.toString("yyyy-MM-dd dddd") )if __name__ == '__main__':app = QApplication(sys.argv)demo = CalendarExample()demo.show()sys.exit(app.exec_())

2、QDateTimeEdit时间类

QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘和上、下箭头按钮来增加或减少日期时间值。

Qt Company中时间组件效果

QDateTimeEdit类中的常用方法如下表所示:

QDateTimeEdit类中的常用信号如下表所示:

QDateTimeEdit类中包含QDateEdit类和QTimeEdit类,QDateEdit类用来编辑控件的日期,仅包括年、月和日;QTimeEdit用来编辑控件的时间,仅包括小时、分钟和秒。

不要用QDateEdit类来设置或获取时间,也不要用QTimeEdit类来设置或获取日期。如果要同时操作日期时间,请使用QDateTimeEdit类。

设置弹出日历时要注意:用来弹出日历的类只有QDateTimeEdit类和QDateEdit类,而QTimeEdit类虽然在语法上可以设置弹出日历,但不起作用。

在默认情况下,如果QDateTimeEdit类构造时不指定日期时间,那么系统会为其设置一个和本地相同的日期时间格式,并且值为2000年1月1日0时0分0秒,也可以手动指定控件显示的日期时间。

通过示例了解QDateTimeEdit时间类,示例效果如下所示:

在这个例子中有QDateTimeEdit控件和按钮控件,当单击“获得日期和时间"按钮时,会获得当前的日期和时间。

实现代码如下所示:

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate,   QDateTime , QTime class DateTimeEditDemo(QWidget):def __init__(self):super(DateTimeEditDemo, self).__init__()self.initUI()def initUI(self): self.setWindowTitle('QDateTimeEdit例子')self.resize(300, 90)   vlayout = QVBoxLayout()self.dateEdit = QDateTimeEdit(QDateTime.currentDateTime(), self)self.dateEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")# 设置最小日期self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365)) # 设置最大日期self.dateEdit.setMaximumDate(QDate.currentDate().addDays(365)) self.dateEdit.setCalendarPopup( True)self.dateEdit.dateChanged.connect(self.onDateChanged) self.dateEdit.dateTimeChanged.connect(self.onDateTimeChanged) self.dateEdit.timeChanged.connect(self.onTimeChanged) self.btn = QPushButton('获得日期和时间')  self.btn.clicked.connect(self.onButtonClick) vlayout.addWidget( self.dateEdit )vlayout.addWidget( self.btn )self.setLayout(vlayout)   # 日期发生改变时执行      def onDateChanged(self , date):print(date)# 无论日期还是时间发生改变,都会执行def onDateTimeChanged(self , dateTime ):print(dateTime)# 时间发生改变时执行def onTimeChanged(self , time):print(time)            def onButtonClick(self ):      dateTime  = self.dateEdit.dateTime()# 最大日期maxDate = self.dateEdit.maximumDate() # 最大日期时间maxDateTime = self.dateEdit.maximumDateTime() # 最大时间maxTime = self.dateEdit.maximumTime() # 最小日期minDate = self.dateEdit.minimumDate() # 最小日期时间minDateTime = self.dateEdit.minimumDateTime() # 最小时间 minTime = self.dateEdit.minimumTime() print('\n选择日期时间'  )    print('dateTime=%s' % str(dateTime) ) print('maxDate=%s' % str(maxDate) ) print('maxDateTime=%s' % str(maxDateTime) ) print('maxTime=%s' % str(maxTime) ) print('minDate=%s' % str(minDate) ) print('minDateTime=%s' % str(minDateTime) ) print('minTime=%s' % str(minTime) ) if __name__ == '__main__':app = QApplication(sys.argv)demo = DateTimeEditDemo()demo.show()sys.exit(app.exec_())

Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)相关推荐

  1. Python Qt GUI设计:QLineEdit和QTextEdit文本框类(基础篇—13)

    目录 1.QLineEdit文本框类 2.QTextEdit文本框类 QLineEdit和QTextEdit都是文本框类,QLineEdit类是单行文本框控件,可以输入单行字符串.QTextEdit类 ...

  2. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  3. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

    目录 1. 水平布局类(QHBoxLayout) 2.垂直布局类(QVBoxLayout) 3.网格布局类(QGridLayout) 3.1.单一的网络布局 3.2.跨越行.列的网络布局 4.表单布局 ...

  4. Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)

    目录 1.布局管理器进行布局 2.容器控件进行布局 3.geometry属性:控件绝对布局 4.sizePolicy属性:微调优化控件布局 Qt Designer提供4种窗口布局方式,分别如下: Ve ...

  5. Python Qt GUI设计:QPushButton、QRadioButton和QCheckBox按钮类(基础篇—12)

    目录 1.QPushButton按钮类 2.QRadioButton按钮类 3.QCheckBox按钮类 在GUI设计中,按钮都是最重要的和常用的触发动作请求的方式,用来与用户进行交互操作.在PyQt ...

  6. Python Qt GUI设计:QMainWindow、QWidget和QDialog窗口类(基础篇—10)

    目录 1. QMainWindow窗口 2.QWidget窗口 3.QDialog窗口 3.1.QMessageBox窗口 3.2.QInputDialog窗口 3.3.QFontDialog窗口 3 ...

  7. Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)

    目录 1.QTimer计时器类 2.QThread多线程类 3.事件处理类 一般情况下,应用程序都是单线程运行的,但是对于GUI程序来说,单线程有时候满足不了需求.例如,如果需要执行一个特别耗时的操作 ...

  8. Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    目录 1.QTableView类 2.QListView类 3.QListWidet类 4.QTableWidget类 5.QTreeWidget和QTreeWidgetltem类 表格与树解决的问题 ...

  9. Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)

    目录 1.创建项目 2.将.ui文件生成.py文件 2.1.Eric 6编译 2.2.Python命令行编译 2.3.脚本编译 3.界面.逻辑分离思想 在开始本文之前提醒各位朋友,Python记得安装 ...

最新文章

  1. 并查集和prime和kruskal
  2. 【微信小程序】 setData 的用法
  3. [单选题]$array = array('a','b','c','d'); $array_now = array_splice($array,2); print_r($array_now);...
  4. 日期格式化为yyyymmdd_你还在用SimpleDateFormat格式化时间嘛
  5. ajax 中$.each(json,function(index,item){ }); 中的2个参数表示什么意思?
  6. [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”
  7. python 科研统计_Python科研统计作图Plotnine+Seaborn+matplotlib替代R ggplot2系列!(二)...
  8. vs2019的mfc学习
  9. vb rs.recordCount=-1的解决办法
  10. 【Rust 笔记】08-枚举与模式
  11. android滑屏效果,Android使用ViewFlipper和GestrueDetector共同实现滑屏效果实例
  12. java cms 垃圾回收_了解Java垃圾自动回收
  13. hadoop(hadoop是什么)
  14. 【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9...)
  15. 他是互联网顶尖大佬,创办并掌舵Facebook多年,现在却被要求辞职
  16. mysql 页和叶子页_Mysql —— 页与索引
  17. 全新的自动化脚本编写工具Aqua
  18. 前车之鉴:我在数据科学职位面试中犯过的5个错误
  19. eclipse for Java还是java ee
  20. bbc 王超_BBC Microbit入门

热门文章

  1. Libzip 版本过低或提示reinstall解决方法
  2. RxJava 内置多种用于调度的线程类型
  3. RecyclerView smoothScrollToPosition 和 scrollToPosition 的区别
  4. POJ 3268 D-Silver Cow Party
  5. ThinkPHP3.2URL重写隐藏应用的入口文件index.php
  6. MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk
  7. bellman_ford寻找平均权值最小的回路
  8. zoj 1010 (线段相交判断+多边形求面积)
  9. 软件行业项目经理主要的职责是什么?(转)
  10. C C++的编译过程详解