|
|
做得不错!用Python3和tkinter可以轻松实现一个txt阅读编辑器。下面是一个基础示例,包含错误弹窗、打开保存文件、更改字体字号功能。有什么问题可以继续交流。
- import tkinter as tk
- from tkinter import filedialog, messagebox, font
- def open_file():
- try:
- filepath = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
- if not filepath:
- return
- with open(filepath, 'r', encoding='utf-8') as f:
- content = f.read()
- text.delete('1.0', tk.END)
- text.insert('1.0', content)
- except Exception as e:
- messagebox.showerror("错误", str(e))
- def save_file():
- try:
- filepath = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text files", "*.txt")])
- if not filepath:
- return
- with open(filepath, 'w', encoding='utf-8') as f:
- f.write(text.get('1.0', tk.END))
- messagebox.showinfo("成功", "文件已保存")
- except Exception as e:
- messagebox.showerror("错误", str(e))
- def change_font():
- font_name = font_entry.get()
- font_size = int(size_entry.get()) if size_entry.get().isdigit() else 12
- text.config(font=(font_name, font_size))
- root = tk.Tk()
- root.title("简单TXT阅读器")
- text = tk.Text(root, wrap='word')
- text.pack(fill='both', expand=True)
- # 菜单栏
- menu = tk.Menu(root)
- root.config(menu=menu)
- file_menu = tk.Menu(menu, tearoff=0)
- menu.add_cascade(label="文件", menu=file_menu)
- file_menu.add_command(label="打开", command=open_file)
- file_menu.add_command(label="保存", command=save_file)
- file_menu.add_separator()
- file_menu.add_command(label="退出", command=root.quit)
- # 字体设置区域
- font_frame = tk.Frame(root)
- font_frame.pack(pady=5)
- tk.Label(font_frame, text="字体:").pack(side='left')
- font_entry = tk.Entry(font_frame)
- font_entry.insert(0, "TkDefaultFont")
- font_entry.pack(side='left', padx=5)
- tk.Label(font_frame, text="字号:").pack(side='left')
- size_entry = tk.Entry(font_frame, width=5)
- size_entry.insert(0, "12")
- size_entry.pack(side='left', padx=5)
- tk.Button(font_frame, text="应用", command=change_font).pack(side='left')
- root.mainloop()
复制代码
这个示例使用了try-except来捕获错误并弹窗提示。字体和字号可以手动输入后点击“应用”更改。你可以根据需要扩展功能。如果遇到具体问题,欢迎回复!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|