A QCalendarWidget provides a monthly based calendar widget. It allows a user to select a date in a simple and intuitive(直观的) way.
代码:
# coding='utf-8'
from PyQt5.QtWidgets import QApplication, QWidget,\
QCalendarWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import QDate
import sys
class Gui(QWidget):
def __init__(self):
super(Gui, self).__init__()
self.start()
def start(self):
# 创建垂直布局对象
vbox = QVBoxLayout(self)
# 日历组件的构造函数:
""" QCalendarWidget(parent: QWidget = None) """
cal = QCalendarWidget(self)
# 让日历可以看得见(默认就是看得见的),\
# 但如果你手动设置成False就看不见了
cal.setVisible(True)
# 让clicked[QDate]这个信号(设置参数类型QDate)与\
# self.show_date这个槽关联
cal.clicked[QDate].connect(self.show_date)
# 将日历添加到垂直布局中去
vbox.addWidget(cal)
# 标签构造函数:QLabel(parent: QWidget = None,\
# flags: Union[Qt.WindowFlags, Qt.WindowType]\
# = Qt.WindowFlags())
self.label = QLabel(self)
# 得到日历当前选中的值(类型是QDate类型)(初始默认选择当前日期)
date = cal.selectedDate()
self.label.setText(date.toString())
vbox.addWidget(self.label)
# 将主窗体的默认布局设置成vbox垂直布局
self.setLayout(vbox)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('日历')
self.show()
def show_date(self, date):
self.label.setText(date.toString())
app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())
运行结果:
image.png
image.png
网友评论