parent
430c27dfed
commit
6ae3c7ba54
@ -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_())
|
Loading…
Reference in new issue