zoukankan      html  css  js  c++  java
  • PyQt5-QCalendar和QDateTimeEdit使用(日历和时间)

    一、QCalendar是一个日历控件,提供了基于月份的师徒,允许用户通过鼠标或者键盘来选择日期,默认为当前日期;

    常用方法:

    例如:

     1 #QCalendar日历控件使用
     2 from PyQt5.QtWidgets import QCalendarWidget, QFileDialog,QTextEdit,QFontDialog, QLineEdit,QStyle,QFormLayout, QInputDialog,QVBoxLayout,QWidget,QApplication ,QHBoxLayout,QDialog,QPushButton,QMainWindow,QGridLayout,QLabel
     3 from PyQt5.QtCore import QDir
     4 from PyQt5.QtGui import QIcon,QPixmap,QFont
     5 from PyQt5.QtCore import  QDate
     6 
     7 import sys
     8 
     9 class WindowClass(QWidget):
    10 
    11     def __init__(self,parent=None):
    12 
    13         super(WindowClass, self).__init__(parent)
    14         self.btn=QPushButton(self)#self参数则让该按钮显示当前窗体中
    15         self.btn.setText("选择日期")
    16         self.btn.move(0,0)
    17         self.btn.clicked.connect(self.openCalendar)
    18         self.le=QLabel(self)
    19         self.cal=QCalendarWidget(self)
    20         self.cal.setMinimumDate(QDate(2017,1,1))#设置日期最小范围
    21         self.cal.setMaximumDate(QDate(2019,12,30))#设置日期最大范围
    22         self.cal.setGridVisible(True)#是否显示日期之间的网格
    23         self.cal.move(5,30)
    24         self.cal.hide()#隐藏日期控件
    25         self.cal.clicked[QDate].connect(self.showDate)#clicked[参数],即定义showDate是传入的参数类型设置
    26         date=self.cal.selectedDate()#获取选中日期,默认当前系统时间
    27         self.le.setText(date.toString('yyyy-MM-dd dddd'))
    28         self.le.move(100,8)
    29         self.setGeometry(100,100,400,350)#设置当前窗体位置和大小
    30         self.setWindowTitle("日历控件使用")
    31 
    32     def showDate(self,date):
    33         self.le.setText(date.toString("yyyy-MM-dd dddd"))
    34         self.cal.close()#关闭日期控件
    35     def openCalendar(self):
    36         self.cal.show()#显示日期控件
    37 
    38 if __name__=="__main__":
    39     app=QApplication(sys.argv)
    40     win=WindowClass()
    41     win.show()
    42     sys.exit(app.exec_())

     二、QDateTimeEdit控件:

    QDateEdit和QTimeEdit类均继承自QDateTimeEdit类,他们的方法都是QDateTimeEdit类提供;

    QDateEdit和QTimeEdit类继承结构如下

    QWidget->QAbstractSpinBox->QDateTimeEdit->QDateEdit->QTimeEditi

    注意:QDateEdit用于获取年月日,QTimeEdit用于编辑时分秒; 两者不要使用前者操作时间,后者操作日期;

    日历弹出只有QDateTimeEdit和QDateEdit起作用,QTimeEdit不起作用;

    设置弹出日历使用:dateTimeEdit.setCalendarPopup(True)

     1 #QDateEdit和QTimeEdit控件使用
     2 from PyQt5.QtWidgets import QDateEdit,QDateTimeEdit,QTimeEdit, QCalendarWidget, QFileDialog,QTextEdit,QFontDialog, QLineEdit,QStyle,QFormLayout, QInputDialog,QVBoxLayout,QWidget,QApplication ,QHBoxLayout,QDialog,QPushButton,QMainWindow,QGridLayout,QLabel
     3 from PyQt5.QtCore import QDir
     4 from PyQt5.QtGui import QIcon,QPixmap,QFont
     5 from PyQt5.QtCore import  QDate
     6 
     7 import sys
     8 
     9 class WindowClass(QWidget):
    10 
    11     def __init__(self,parent=None):
    12 
    13         super(WindowClass, self).__init__(parent)
    14         self.btn=QPushButton(self)#self参数则让该按钮显示当前窗体中
    15         self.btn.setText("点击获取日期信息")
    16         self.btn.clicked.connect(self.showdate)
    17 
    18         self.dateEdit=QDateEdit(self)
    19         self.timeEdit=QTimeEdit(self)
    20         self.dateTimeEdit=QDateTimeEdit(self)
    21         self.dateEdit.setCalendarPopup(True)
    22         #self.timeEdit.setCalendarPopup(True)#弹出界面是失效的注意;
    23         #self.dateTimeEdit.setCalendarPopup(True)#时间是无法选择的
    24         self.dateEdit.move(10,200)
    25         self.timeEdit.move(10,100)
    26         self.dateTimeEdit.move(10,300)
    27         self.dateEdit.setDisplayFormat("yyyy-MM-dd")
    28         self.timeEdit.setDisplayFormat("HH:mm:ss")
    29         self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
    30         self.setWindowTitle("QDateEdit和QDateTimeEdit控件使用")
    31 
    32     def showdate(self):
    33         print(self.dateEdit.text())
    34 
    35 if __name__=="__main__":
    36     app=QApplication(sys.argv)
    37     win=WindowClass()
    38     win.show()
    39     sys.exit(app.exec_())

    也可以手动设置时间和日期:

    dateEdit=QDateTimeEdit(QDate.currentDate(),self)

    timeEdit=QDateTimeEdit(QTime.currentTime(),self)

    dateTimeEdit=QDateTimeEdit(QDateTime.currentDateTime(),self)

    以上组件的常用信号和槽函数如下:

    信号:dateChanged、dateTimeChanged、timeChanged

    槽函数:默认为槽函数参数为QDate QDateTime QTime类型:

    例如:修改上面程序如下

    引用书中的讲解内容如下:

  • 相关阅读:
    Redis的基本操作
    Redis下载和安装-windows
    Redis介绍
    day08 网络编程
    day07
    day06
    python day05
    Day04
    windows自带反编译chm文件
    CSS Hack表 各版本IE、chrome、firefox、opera
  • 原文地址:https://www.cnblogs.com/ygzhaof/p/10070077.html
Copyright © 2011-2022 走看看