import sys from PyQt5QtWidgets import from PyQt5QtCore import from PyQt5QtGui import from PyQt5QtCore import QDate QDateTime Qt from PyQt5 import QtCore import time import datetime class CalenderExa
import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import* from PyQt5.QtCore import QDate, QDateTime, Qt from PyQt5 import QtCore import time import datetime
class CalenderExample(QWidget): def init(self): super(CalenderExample,self).init() self.init_ui()
def init_ui(self):
self.setWindowTitle("我的超级无敌小日历")
grid = QGridLayout()
'''创建日历控件对象'''
self.calender_ = QCalendarWidget(self)
self.calender_.setGridVisible(True)
self.calender_.setMinimumDate(QDate(1970,1,1))
self.calender_.setMaximumDate(QDate(3200,1,1))
grid.addWidget(self.calender_,4,0, 1, 1)
self.current_date_ = QLabel(self)
self.current_date_.setText("大人你选的日子是")
grid.addWidget(self.current_date_, 0, 0, 1, 1)
self.time_difference = QLabel(self)
self.time_difference.setText("和您现在的日子差:")
grid.addWidget(self.time_difference, 3, 0, 1, 1)
self.calender_.clicked[QtCore.QDate].connect(self.calender_show)
self.calender_.clicked[QtCore.QDate].connect(self.show_difference)
self.current_date=QLabel(self)
date=self.calender_.selectedDate()
self.current_date.setText(date.toString("yyyy-MM-dd"))
grid.addWidget(self.current_date, 2, 0, 1, 1)
self.setGeometry(100,100,100,100)
self.memo = QTextEdit(self)
self.memo.setGeometry(30, 10, 30, 20)
grid.addWidget(self.memo, 4, 2, 1, 1)
#回到今天
self.button_today = QPushButton(self)
self.button_today.setText("速速回到今天")
self.button_today.clicked.connect(self.go_to_today)
grid.addWidget(self.button_today, 5, 0, 1, 1)
#备忘录
self.button_memo = QPushButton(self)
self.button_memo.setText("想要记录点东西吗")
self.button_memo.clicked.connect(self.add_memo)
grid.addWidget(self.button_memo, 6, 0, 1, 1)
#指令返回
self.calender_.clicked[QtCore.QDate].connect(self.calender_show)
self.calender_.clicked[QtCore.QDate].connect(self.show_difference)
date=self.calender_.selectedDate()
#3实时时钟
self.label_date = QLabel(self)
self.label_date.move(20,100)
self.label_date.setFixedHeight(30)
self.label_date.setFont(QFont('Arial', 10))
grid.addWidget(self.label_date, 10, 0, 1, 1)
# 显示日期
self.showDate()
# 显示时间
self.label_time = QLabel(self)
self.label_time.move(20,100)
self.label_time.setFont(QFont('Arial', 26))
palette = QPalette()
brush = QBrush(QColor(200, 100, 0))
brush.setStyle(Qt.SolidPattern)
palette.setBrush(QPalette.Active, QPalette.WindowText, brush)
self.label_time.setPalette(palette)
self.label_time.setFixedHeight(60)
grid.addWidget(self.label_time, 11, 0, 1, 1)
self.setLayout(grid)
# 添加定时器
self.timer = QTimer()
self.timer.timeout.connect(self.showTime)
self.timer.start(1000)
# 添加提醒列表
self.memos = QListWidget(self)
grid.addWidget(self.memos, 4, 1, 1, 1)
# 添加提醒定时器
self.reminder_timer = QTimer()
self.reminder_timer.timeout.connect(self.check_reminders)
self.reminder_timer.start(1000)
def calender_show(self,date):
self.current_date.setText(date.toString("yyyy-MM-dd"))
def show_difference(self, date):
date1 = self.calender_.selectedDate()
if date1.isValid():
datetime1 = QDateTime(date1)
seconds_difference = abs(datetime1.toSecsSinceEpoch() -QDateTime.currentDateTime().toSecsSinceEpoch())
days_difference = seconds_difference // (24 * 3600)
self.time_difference.setText("和您现在的日子差:%d天" % days_difference)
else:
self.time_difference.setText("和您现在的日子差:")
def showDate(self):
date = QDate.currentDate()
self.label_date.setText(date.toString('yyyy年MM月dd日'))
def showTime(self):
time = QTime.currentTime()
self.label_time.setText(time.toString('hh:mm:ss'))
def go_to_today(self):
today = QDate.currentDate()
self.calender_.setSelectedDate(today)
def add_memo(self):
memo_dialog = QDialog(self)
memo_dialog.setWindowTitle("添加提醒")
memo_dialog.setWindowModality(Qt.ApplicationModal)
# 添加标题
title_label = QLabel("标题", memo_dialog)
title_input = QLineEdit(memo_dialog)
# 添加内容
content_label = QLabel("内容", memo_dialog)
content_input = QTextEdit(memo_dialog)
# 添加提醒时间
time_label = QLabel("提醒时间", memo_dialog)
time_edit = QDateTimeEdit(memo_dialog)
time_edit.setDateTime(QDateTime.currentDateTime())
# 添加按钮
add_button = QPushButton("添加", memo_dialog)
add_button.clicked.connect(lambda: self.add_memo_item(title_input.text(), content_input.toPlainText(), time_edit.dateTime()))
# 添加布局
memo_layout = QVBoxLayout()
memo_layout.addWidget(title_label)
memo_layout.addWidget(title_input)
memo_layout.addWidget(content_label)
memo_layout.addWidget(content_input)
memo_layout.addWidget(time_label)
memo_layout.addWidget(time_edit)
memo_layout.addWidget(add_button)
memo_dialog.setLayout(memo_layout)
memo_dialog.exec_()
def add_memo_item(self, title, content, time):
memo_item = QListWidgetItem()
memo_item.setText(title)
memo_item.setData(Qt.UserRole, content)
memo_item.setData(Qt.UserRole+1, time)
self.memos.addItem(memo_item)
def check_reminders(self):
current_time = QDateTime.currentDateTime()
for i in range(self.memos.count()):
memo_item = self.memos.item(i)
memo_time = memo_item.data(Qt.UserRole+1)
if memo_time <= current_time:
memo_content = memo_item.data(Qt.UserRole)
QMessageBox.information(self, "提醒", memo_content)
self.memos.takeItem(i)
if name == 'main': app=QApplication(sys.argv) demo=CalenderExample() demo.show() sys.exit(app.exec_()
原文地址: http://www.cveoy.top/t/topic/hn0J 著作权归作者所有。请勿转载和采集!