前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)

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

作者头像
不脱发的程序猿
发布于 2021-10-26 02:47:49
发布于 2021-10-26 02:47:49
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

目录

1、QCalendar日历类

2、QDateTimeEdit时间类


1、QCalendar日历类

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

Qt Company中日历组件效果

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

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

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

实现代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
from PyQt5 import QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate

class 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控件和按钮控件,当单击“获得日期和时间"按钮时,会获得当前的日期和时间。

实现代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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_())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PyQt5 日历控件(QCalendarWidget)
点击日期时会发射.clicked 信号,信号参数类型为PyQt5.QtCore.QDate
用户6021899
2019/08/14
2K0
Python高级进阶#018 pyqt5日历控件QCalendarWidget应用
问题是在我们的槽方法中无法对日期进行代码提示,关键的技巧就是对参数重新格式化为QDate类型就可以了。
刘金玉编程
2019/11/09
1.4K0
Python高级进阶#018 pyqt5日历控件QCalendarWidget应用
python pyqt5 QCalendar
setDateRange() setMinimumDate() setMaxmumDate() setSelectedDate()
用户5760343
2019/07/05
5540
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/05/10
1.9K0
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
在开发程序时,如果这个程序只有一个窗口,则应该关心这个窗口里面的各个控件之间是如何传递数据的。如果这个程序有多个窗口,那么还应该关心不同的窗口之间是如何传递数据的。
不脱发的程序猿
2021/12/08
3.3K0
Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
在Python Qt GUI设计:窗口布局管理方法【基础篇】(基础篇—5)文章中,聊到了如何使用Qt Designer进行窗口布局管理,其实在Qt Designer中可以非常方便进行窗口布局管理设计,本篇博文在4种窗口布局方式基础上继续深入聊聊API函数~
不脱发的程序猿
2021/10/09
4.7K0
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
PyQt5案例汇总(完整版)
PyQt5是一套绑定Qt5的应用程序框架。他在Python 2.x和3.x中都是可用的。该教程使用的是Python3.x。
victorfengming
2021/11/26
5.2K0
用python写一个自动关机程序,并打包成exe可执行程序!
创建一个日期时间文本框,QDateEdit表示添加日期文本框,QTimeEdit表示添加时间文本框。
秃头程序员
2022/01/08
1.4K0
用python写一个自动关机程序,并打包成exe可执行程序!
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/06/06
4.7K0
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)
在这个例子中显示了一个下拉列表框和一个标签,其中下拉列表框中有5个选项,既可以使用QComboBox的addltem()方法添加单个选项,也可以使用addltems()方法添加多个选项,标签显示的是从下拉列表框中选择的选项。
不脱发的程序猿
2021/10/21
2.6K0
Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)
本篇博文主要介绍如何实现在窗口中绘图,在 PyQt5中,一般可以通过QPainter、QPen、QBrush和QPixmap这四个类来实现绘图功能。其中,QPixmap的作用是加载并呈现本地图像,而图像的呈现本质上也是通过绘图方式实现的。
不脱发的程序猿
2021/10/26
2.3K0
Python Qt GUI设计:QDrag拖拽数据传输类(基础篇—18)
为用户提供的拖曳功能很直观,在很多桌面应用程序中,复制或移动对象都可以通过拖曳来完成。
不脱发的程序猿
2021/10/26
8370
Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)
表格与树解决的问题是如何在一个控件中有规律地呈现更多的数据。PyQt提供了两种控件类用于解决该问题,其中一种是表格结构的控件类,另一种是树形结构的控件类。
不脱发的程序猿
2021/11/02
4K0
【Android从零单排系列十一】《Android视图控件——日历、日期、时间选择控件》
小伙伴们,在上文中我们介绍了Android视图控件ImageView控件,本文我们继续盘点,介绍一下视图控件的日历、日期、时间组件。
再见孙悟空_
2023/02/10
14.8K1
【Android从零单排系列十一】《Android视图控件——日历、日期、时间选择控件》
python 爬虫示例--基金查询demo
这两天试着学了一下爬虫,刚学会了爬取静态网页,就趁热现学现卖,做了一个基金查询的demo。
用户6021899
2019/11/05
1.4K0
Python Qt GUI设计:多线程中信号与槽的使用(基础篇—9)
有时候在项目开发时,经常会遇到一些耗时操作导致界面迟缓卡顿,为了解决这个问题,可以创建多线程,使用主线程更新界面使用子线程实时处理数据,最后将结果显示到界面上。
不脱发的程序猿
2021/10/13
2.2K0
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
信号(signal)和槽(slot)是Qt的核心机制,也是在PyQt编程中对象之间进行通信的机制。在创建事件循环之后,通过建立信号和槽的连接就可以实现对象之间的通信。当信号发射(emit)时,连接的槽函数将会自动执行。
不脱发的程序猿
2021/10/13
3.4K0
Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)
一般情况下,应用程序都是单线程运行的,但是对于GUI程序来说,单线程有时候满足不了需求。例如,如果需要执行一个特别耗时的操作,在执行过程中整个程序就会卡顿,效果就非常不理想或者Windows系统也认为程序运行出错,自动关闭了程序。要解决这种问题就涉及多线程的知识。
不脱发的程序猿
2021/10/13
3.4K0
Python Qt GUI设计:QSpinBox计数器类(基础篇—15)
QSpinBox是一个计数器控件,允许用户选择一个整数值,通过单击向上/向下按钮或按键盘上的上/下箭头来增加/减少当前显示的值,当然用户也可以输入值。
不脱发的程序猿
2021/10/25
1.2K0
Python Qt GUI设计:QSpinBox计数器类(基础篇—15)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
有时候我们可能会面临这样一种情况:所开发的程序包含了太多的控件,导致一个窗口装载不下或者装载的控件太多而不美观。
不脱发的程序猿
2021/11/08
2.6K0
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
推荐阅读
PyQt5 日历控件(QCalendarWidget)
2K0
Python高级进阶#018 pyqt5日历控件QCalendarWidget应用
1.4K0
python pyqt5 QCalendar
5540
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
1.9K0
Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
3.3K0
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
4.7K0
PyQt5案例汇总(完整版)
5.2K0
用python写一个自动关机程序,并打包成exe可执行程序!
1.4K0
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
4.7K0
Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)
2.6K0
Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)
2.3K0
Python Qt GUI设计:QDrag拖拽数据传输类(基础篇—18)
8370
Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)
4K0
【Android从零单排系列十一】《Android视图控件——日历、日期、时间选择控件》
14.8K1
python 爬虫示例--基金查询demo
1.4K0
Python Qt GUI设计:多线程中信号与槽的使用(基础篇—9)
2.2K0
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
3.4K0
Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)
3.4K0
Python Qt GUI设计:QSpinBox计数器类(基础篇—15)
1.2K0
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
2.6K0
相关推荐
PyQt5 日历控件(QCalendarWidget)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验