ADD file via upload

main
pnlj9wasb 1 year ago
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…
Cancel
Save