在edit_diary函数中,写一个点击按钮,实现修改内容的功能
时间: 2024-03-08 07:49:05 浏览: 60
好的,您可以在 `edit_diary` 函数中添加以下代码来创建一个 "保存" 按钮:
```
def edit_diary():
# 创建新窗口
edit_window = tk.Toplevel(root)
edit_window.title("修改日记内容")
# 设置子窗口大小为300x300,并让窗口居中显示
window_width = 300
window_height = 300
screen_width = edit_window.winfo_screenwidth()
screen_height = edit_window.winfo_screenheight()
x_coordinate = int((screen_width - window_width) / 2)
y_coordinate = int((screen_height - window_height) / 2)
edit_window.geometry(f"{window_width}x{window_height}+{x_coordinate}+{y_coordinate}")
# 创建 Text 组件
text_widget = tk.Text(edit_window)
text_widget.pack(fill='both', expand=True)
# 获取当前选中的日记条目的索引和内容
selected_item = text_widget.tag_ranges(tk.SEL)
if selected_item:
start, end = selected_item
index = int(text_widget.get(f"{start} linestart", f"{start} lineend"))
content = diary[index-1]
else:
tk.messagebox.showwarning("警告", "请先选中要修改的日记条目!")
return
# 在 Text 组件中显示当前选中的日记内容
text_widget.insert(tk.END, content)
# 创建保存按钮
save_button = tk.Button(edit_window, text="保存", command=lambda: save_edited_diary(text_widget, index))
save_button.pack(side=tk.BOTTOM, pady=10)
```
其中 `save_edited_diary` 是一个新函数,用于保存用户修改后的日记内容。您需要自己实现这个函数,以下是一个可能的实现:
```
def save_edited_diary(text_widget, index):
# 获取用户修改后的日记内容
edited_content = text_widget.get('1.0', tk.END).strip()
if edited_content:
# 更新日记列表中对应的内容
diary[index-1] = edited_content
# 更新 Text 组件中对应的内容
text_widget.delete('1.0', tk.END)
for i, entry in enumerate(diary):
entry_with_number = f"{i + 1}. {entry}"
text_widget.insert(tk.END, entry_with_number + '\n\n')
# 关闭编辑窗口
tk.messagebox.showinfo("提示", "日记内容已保存!")
edit_window.destroy()
else:
tk.messagebox.showwarning("警告", "日记内容不能为空!")
```
当用户在日记列表中选中某一条目并点击 "修改" 按钮后,程序会弹出一个新的窗口,显示当前选中的日记内容,并提供一个 "保存" 按钮,用于保存用户修改后的内容。当用户点击 "保存" 按钮时,程序会调用 `save_edited_diary` 函数来更新日记列表和 Text 组件中对应的内容,并关闭编辑窗口。
阅读全文