使用 Python PyQt5 创建备忘事项应用程序,并添加删除功能

本文将介绍如何使用 Python PyQt5 库创建一个备忘事项应用程序,并添加删除备忘内容的功能。用户可以创建新的备忘事项,设置提醒时间,并删除已完成的备忘事项。

代码实现

from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QLabel, QLineEdit, QTextEdit, QPushButton, QMessageBox, QListWidget, QListWidgetItem, QHBoxLayout, QVBoxLayout, QDateTimeEdit
from PyQt5.QtCore import Qt, QDateTime

class MemoApp(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('喵喵备忘录')
        self.memos = QListWidget(self)

        # 添加创建备忘按钮
        add_button = QPushButton('添加备忘', self)
        add_button.clicked.connect(self.add_memo)

        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.memos)
        layout.addWidget(add_button)
        self.setLayout(layout)

    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)

        # 添加删除按钮
        delete_button = QPushButton('删除')
        delete_button.clicked.connect(lambda: self.delete_memo_item(memo_item))
        memo_item.setSizeHint(delete_button.sizeHint())

        # 添加布局
        layout = QHBoxLayout()
        layout.addWidget(QLabel(title))
        layout.addWidget(delete_button)
        memo_item.setLayout(layout)

        self.memos.addItem(memo_item)

    def delete_memo_item(self, memo_item):
        confirm = QMessageBox.question(self, '确认删除', '确定要删除这个备忘吗?', QMessageBox.Yes | QMessageBox.No)
        if confirm == QMessageBox.Yes:
            self.memos.takeItem(self.memos.row(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([])
    memo_app = MemoApp()
    memo_app.show()
    app.exec_()

功能说明

  1. 添加备忘:

    • 点击“添加备忘”按钮,弹出对话框。
    • 在对话框中输入标题、内容和提醒时间。
    • 点击“盖章”按钮,将备忘内容添加到备忘列表中。
  2. 删除备忘:

    • 每个备忘事项旁边都有一个“删除”按钮。
    • 点击“删除”按钮,弹出确认删除对话框。
    • 确认删除后,备忘事项将从列表中移除。

运行结果

运行程序后,将会出现一个窗口,包含一个备忘事项列表和一个“添加备忘”按钮。用户可以点击“添加备忘”按钮创建新的备忘事项,并在备忘事项列表中查看和删除它们。

希望本文对您有所帮助。如果您有任何问题,请随时提出。


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

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