Python PyQt 实现备忘录功能:添加、删除和提醒
Python PyQt 实现备忘录功能:添加、删除和提醒
本文介绍使用 Python PyQt 库实现一个简单的备忘录功能,包括添加新的备忘、删除备忘以及在指定时间提醒用户。代码示例清晰易懂,并附带详细的注释,方便理解。
代码示例
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))
# 添加布局
layout = QHBoxLayout()
layout.addWidget(QLabel(title))
layout.addWidget(delete_button)
memo_item.setSizeHint(layout.sizeHint())
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)
break # 在找到一个需要提醒的备忘后立即停止循环,避免漏提醒
代码解释
-
add_memo()函数:- 创建一个
QDialog窗口用于添加新的备忘。 - 使用
QLabel和QLineEdit添加标题输入框。 - 使用
QLabel和QTextEdit添加内容输入框。 - 使用
QLabel和QDateTimeEdit添加提醒时间选择器。 - 使用
QPushButton添加“盖章”按钮,点击后会触发add_memo_item函数。
- 创建一个
-
add_memo_item()函数:- 创建一个
QListWidgetItem对象,用于表示一个备忘条目。 - 使用
setText设置备忘标题。 - 使用
setData将备忘内容和提醒时间分别存储在Qt.UserRole和Qt.UserRole+1位置。 - 创建一个“删除”按钮,点击后会触发
delete_memo_item函数。 - 将标题标签和删除按钮添加到一个
QHBoxLayout中,并设置memo_item的大小和布局。 - 将
memo_item添加到self.memos中,self.memos应该是用来展示所有备忘的QListWidget。
- 创建一个
-
delete_memo_item()函数:- 使用
QMessageBox.question弹出一个确认框,询问用户是否确认删除。 - 如果用户确认删除,则使用
self.memos.takeItem从self.memos中删除该备忘条目。
- 使用
-
check_reminders()函数:- 获取当前时间。
- 遍历所有备忘条目。
- 对于每一个备忘条目,检查其提醒时间是否小于等于当前时间。
- 如果提醒时间已到,则使用
QMessageBox.information弹出信息框提醒用户,并从self.memos中删除该备忘条目。 - 使用
break语句在找到一个需要提醒的备忘后立即停止循环,避免漏提醒。
总结
本代码示例展示了如何使用 Python PyQt 库实现一个简单的备忘录功能,包含添加、删除和提醒功能。可以根据需要进行扩展和修改,例如添加更多功能,例如:
- 更改备忘内容
- 设置提醒声音
- 存储备忘数据到文件或数据库
- 支持多种提醒类型,例如时间提醒、日期提醒、周期提醒等
希望这篇文章能帮助您理解如何使用 Python PyQt 实现备忘录功能。
原文地址: https://www.cveoy.top/t/topic/oQST 著作权归作者所有。请勿转载和采集!