|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python3做的txt阅读编辑器:代码来了。- #读取txt.py
- import tkinter as tk
- from tkinter import filedialog, messagebox
- from tkinter.font import Font
- class TxtViewer:
- def __init__(self, root):
- self.root = root
- self.root.title("TXT文本查看编辑器")
- self.root.geometry("800x600")
-
- # 当前打开文件路径
- self.current_file = None
- # 初始化默认字体字号
- self.default_size = 12
- self.default_family = "微软雅黑"
-
- # 创建顶部菜单栏
- self.menu_bar = tk.Menu(self.root)
-
- # 1. 文件菜单
- self.file_menu = tk.Menu(self.menu_bar, tearoff=0)
- self.file_menu.add_command(label="打开文件", command=self.open_file)
- self.file_menu.add_command(label="保存文件", command=self.save_file)
- self.file_menu.add_separator()
- self.file_menu.add_command(label="退出", command=self.root.quit)
- self.menu_bar.add_cascade(label="文件", menu=self.file_menu)
-
- # 2. 字号调整菜单
- self.size_menu = tk.Menu(self.menu_bar, tearoff=0)
- # 添加常用字号选项
- for size in [8, 10, 12, 14, 16, 18, 20, 24, 28]:
- self.size_menu.add_command(label=f"{size}号", command=lambda s=size: self.change_size(s))
- self.menu_bar.add_cascade(label="字号", menu=self.size_menu)
-
- # 3. 字体调整菜单
- self.font_menu = tk.Menu(self.menu_bar, tearoff=0)
- # 添加常用中文字体
- for family in ["微软雅黑", "宋体", "黑体", "楷体", "Arial", "Times New Roman", "Courier New"]:
- self.font_menu.add_command(label=family, command=lambda f=family: self.change_family(f))
- self.menu_bar.add_cascade(label="字体", menu=self.font_menu)
-
- # 绑定菜单栏到主窗口
- self.root.config(menu=self.menu_bar)
-
- # 创建可编辑文本区域,开启自动换行
- self.text_font = Font(family=self.default_family, size=self.default_size)
- self.text_area = tk.Text(
- self.root,
- wrap=tk.WORD,
- font=self.text_font,
- padx=10,
- pady=10
- )
- self.text_area.pack(fill=tk.BOTH, expand=True)
-
- # 添加滚动条
- self.scroll_bar = tk.Scrollbar(self.text_area, command=self.text_area.yview)
- self.text_area.config(yscrollcommand=self.scroll_bar.set)
- self.scroll_bar.pack(side=tk.RIGHT, fill=tk.Y)
- def open_file(self):
- """打开选中的TXT文件"""
- file_path = filedialog.askopenfilename(
- title="选择要打开的TXT文件",
- filetypes=[("文本文档(*.txt)", "*.txt"), ("所有文件", "*.*")]
- )
- if not file_path:
- return
-
- file = None
- try:
- file = open(file_path, "r", encoding="utf-8")
- content = file.read()
- # 清空原有内容,插入新读取的内容
- self.text_area.delete(1.0, tk.END)
- self.text_area.insert(tk.END, content)
- # 更新状态
- self.current_file = file_path
- self.root.title(f"TXT查看器 - {file_path.split('/')[-1]}")
- except Exception as e:
- messagebox.showerror("打开错误", f"打开文件失败: {str(e)}")
- if file:
- file.close()
- self.current_file = None
- finally:
- # 保证异常时文件一定会被关闭
- if file and not file.closed:
- file.close()
- def save_file(self):
- """通过另存为保存文件"""
- save_path = filedialog.asksaveasfilename(
- title="保存文件",
- defaultextension=".txt",
- filetypes=[("文本文档(*.txt)", "*.txt"), ("所有文件", "*.*")]
- )
- if not save_path:
- return
-
- file = None
- try:
- content = self.text_area.get(1.0, tk.END)
- file = open(save_path, "w", encoding="utf-8")
- file.write(content)
- self.current_file = save_path
- self.root.title(f"TXT查看器 - {save_path.split('/')[-1]}")
- messagebox.showinfo("保存成功", f"文件已成功保存到:\n{save_path}")
- except Exception as e:
- messagebox.showerror("保存错误", f"保存文件失败: {str(e)}")
- if file:
- file.close()
- finally:
- if file and not file.closed:
- file.close()
- def change_size(self, new_size):
- """修改文本字号"""
- self.text_font.configure(size=new_size)
- def change_family(self, new_family):
- """修改文本字体"""
- self.text_font.configure(family=new_family)
- if __name__ == "__main__":
- root = tk.Tk()
- app = TxtViewer(root)
- root.mainloop()
复制代码 |
|