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_()

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

原文地址: http://www.cveoy.top/t/topic/hn0J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录