diff --git a/日记应用开发.py b/日记应用开发.py new file mode 100644 index 0000000..1f08b95 --- /dev/null +++ b/日记应用开发.py @@ -0,0 +1,185 @@ +import sys +import os +from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QLabel, QLineEdit, QTextEdit, QPushButton, QMessageBox, + QVBoxLayout, QHBoxLayout, QListWidget, QStackedWidget) +from PyQt5.QtCore import Qt +from datetime import datetime + +class MainApp(QMainWindow): + def __init__(self): + super().__init__() + self.setWindowTitle("日记应用") + self.setGeometry(100, 100, 600, 400) + + self.initUI() + + def initUI(self): + # 创建主窗口的小部件 + self.central_widget = QWidget() + self.setCentralWidget(self.central_widget) + + # 创建顶部的功能按钮 + self.button_write = QPushButton("写日记") + self.button_view = QPushButton("查看日记") + self.button_delete = QPushButton("删除日记") + + self.button_write.clicked.connect(self.show_write_diary) + self.button_view.clicked.connect(self.show_view_diary) + self.button_delete.clicked.connect(self.show_delete_diary) + + # 布局顶部的按钮 + top_layout = QHBoxLayout() + top_layout.addWidget(self.button_write) + top_layout.addWidget(self.button_view) + top_layout.addWidget(self.button_delete) + + # 创建堆叠小部件 + self.stacked_widget = QStackedWidget() + self.stacked_widget.addWidget(self.create_write_diary_widget()) + self.stacked_widget.addWidget(self.create_view_diary_widget()) + self.stacked_widget.addWidget(self.create_delete_diary_widget()) + + # 设置主布局 + main_layout = QVBoxLayout() + main_layout.addLayout(top_layout) + main_layout.addWidget(self.stacked_widget) + self.central_widget.setLayout(main_layout) + + #写日记 + def create_write_diary_widget(self): + widget = QWidget() + + label_date = QLabel("日期:") + self.entry_date = QLineEdit() + + label_title = QLabel("标题:") + self.entry_title = QLineEdit() + + label_content = QLabel("内容:") + self.text_content = QTextEdit() + + label_mood = QLabel("心情:") + self.entry_mood = QLineEdit() + + button_save = QPushButton("保存") + button_save.clicked.connect(self.save_diary) + + button_clear = QPushButton("清空") + button_clear.clicked.connect(self.clear_entries) + + layout = QVBoxLayout() + layout.addWidget(label_date) + layout.addWidget(self.entry_date) + layout.addWidget(label_title) + layout.addWidget(self.entry_title) + layout.addWidget(label_content) + layout.addWidget(self.text_content) + layout.addWidget(label_mood) + layout.addWidget(self.entry_mood) + layout.addWidget(button_save) + layout.addWidget(button_clear) + + widget.setLayout(layout) + return widget + + + #查看日记 + def create_view_diary_widget(self): + widget = QWidget() + + self.diary_list = QListWidget() + self.diary_list.itemClicked.connect(self.display_diary) + + self.diary_display = QTextEdit() + self.diary_display.setReadOnly(True) + + layout = QHBoxLayout() + layout.addWidget(self.diary_list, 1) + layout.addWidget(self.diary_display, 2) + + widget.setLayout(layout) + return widget + + #删除日记 + def create_delete_diary_widget(self): + widget = QWidget() + + self.delete_diary_list = QListWidget() + self.delete_diary_list.itemClicked.connect(self.confirm_delete_diary) + + layout = QVBoxLayout() + layout.addWidget(self.delete_diary_list) + + widget.setLayout(layout) + return widget + + def show_write_diary(self): + self.stacked_widget.setCurrentIndex(0) + + def show_view_diary(self): + self.update_diary_list() + self.stacked_widget.setCurrentIndex(1) + + def show_delete_diary(self): + self.update_delete_diary_list() + self.stacked_widget.setCurrentIndex(2) + + def save_diary(self): + date = self.entry_date.text() + title = self.entry_title.text() + content = self.text_content.toPlainText() + mood = self.entry_mood.text() + if not date or not title or not content: + QMessageBox.warning(self, "错误", "日期、标题和内容不能为空") + return + + current_time = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + file_name = f"{current_time}.txt" + + with open(file_name, "w") as f: + f.write(f"日期:{date}\n") + f.write(f"标题:{title}\n") + f.write(f"内容:{content}\n") + f.write(f"心情:{mood}\n\n") + + reply = QMessageBox.question(self, "提示", f"日记保存成功:{file_name}\n是否继续写日记?", + QMessageBox.Yes | QMessageBox.No, QMessageBox.No) + if reply == QMessageBox.Yes: + self.clear_entries() + else: + self.close() + + def clear_entries(self): + self.entry_date.clear() + self.entry_title.clear() + self.text_content.clear() + self.entry_mood.clear() + + def update_diary_list(self): + self.diary_list.clear() + for file_name in os.listdir(): + if file_name.endswith(".txt"): + self.diary_list.addItem(file_name) + + def display_diary(self, item): + with open(item.text(), "r") as f: + content = f.read() + self.diary_display.setText(content) + + def update_delete_diary_list(self): + self.delete_diary_list.clear() + for file_name in os.listdir(): + if file_name.endswith(".txt"): + self.delete_diary_list.addItem(file_name) + + def confirm_delete_diary(self, item): + reply = QMessageBox.question(self, "确认", f"确定要删除日记:{item.text()}?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) + if reply == QMessageBox.Yes: + os.remove(item.text()) + self.update_delete_diary_list() + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = MainApp() + window.show() + sys.exit(app.exec_())