本文基于Python的PyQt5实现一个桌面版的万年历,核心代码小于30行。
首先安装PyQt5
pip install PyQt5
引入日历相关的核心组件
import sys
from PyQt5.QtCore import QDate
from PyQt5.QtWidgets import (QWidget, QCalendarWidget,
QLabel, QApplication)
定义个显示日期的函数:
def showDate(self, date):
self.lbl.setText(date.toString())
初始化一个桌面UI界面,并调用显示日期的函数
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
cal = QCalendarWidget(self)
cal.setGridVisible(True)
cal.move(20, 20)
cal.clicked[QDate].connect(self.showDate)
self.lbl = QLabel(self)
date = cal.selectedDate()
self.lbl.setText(date.toString())
self.lbl.move(130, 260)
self.setGeometry(600, 200, 800, 500)
self.setWindowTitle('日历')
self.show()
最后输出一个桌面万年历,大工告成,
完整源码如下:
import sys
from PyQt5.QtCore import QDate
from PyQt5.QtWidgets import (QWidget, QCalendarWidget,
QLabel, QApplication)
class QCalendarWidgetExample(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def showDate(self, date):
self.lbl.setText(date.toString())
def initUI(self):
cal = QCalendarWidget(self)
cal.setGridVisible(True)
cal.move(20, 20)
cal.clicked[QDate].connect(self.showDate)
self.lbl = QLabel(self)
date = cal.selectedDate()
self.lbl.setText(date.toString())
self.lbl.move(130, 260)
self.setGeometry(600, 200, 800, 500)
self.setWindowTitle('日历')
self.show()
app = QApplication(sys.argv)
ex = QCalendarWidgetExample()
app.exec_()