tkinter库的应用小示例:文本编辑器

tkinter库的应用小示例:文本编辑器

要 求

创建一个文本编辑器,功能包括,创建、打开、编辑、保存文件。一个Button小组件,命名为btn_open,用于打开要编辑的文件,一个Button小组件,命名为btn_save,用于保存文件,一个TextBox小组件,命名为txt_edit,用于创建、编辑文本文件。把两个按钮放在窗口的左边,把文本框放在右边。整个窗口的最小高度为800像素,txt_edit的最小宽度为800像素,窗口的布局应当能响应窗口尺寸的变化,txt_edit的尺寸也要随之变化,不过容纳按钮的Frame不应该随之变化。可以用.grid()布局管理器实现上述布局。网格应当由一行两列构成,左边是较窄的一列,用于容纳按钮;右边是较宽的一列,用于容纳文本框。

源码如下:

import tkinter as tk
from tkinter import filedialog, messagebox
import easyguiclass TextEditor:def __init__(self, master):self.master = masterself.master.title("简单文本编辑器")# 设置窗口最小大小self.master.minsize(width=800, height=800)# 创建Frame用于按钮self.button_frame = tk.Frame(master)self.button_frame.grid(row=0, column=0, sticky='ns')# 创建按钮self.btn_open = tk.Button(self.button_frame, text="打开", command=self.open_file)self.btn_open.pack(pady=10)self.btn_save = tk.Button(self.button_frame, text="保存", command=self.save_file)self.btn_save.pack(pady=10)# 创建文本框self.txt_edit = tk.Text(master, wrap=tk.WORD)self.txt_edit.grid(row=0, column=1, sticky='nsew')# 配置列和行的权重,使得文本框可以响应窗口尺寸变化master.grid_rowconfigure(0, weight=1)master.grid_columnconfigure(1, weight=1)def open_file(self):file_path = filedialog.askopenfilename(defaultextension=".txt",filetypes=[("Text Files", "*.txt"),("All Files", "*.*")])if file_path:try:with open(file_path, "r", encoding='utf-8') as file:content = file.read()self.txt_edit.delete(1.0, tk.END)  # 清空文本框self.txt_edit.insert(tk.END, content)  # 插入文件内容except Exception as e:messagebox.showerror("错误", f"无法打开文件: {e}")def save_file(self):file_path = filedialog.asksaveasfilename(defaultextension=".txt",filetypes=[("Text Files", "*.txt"),("All Files", "*.*")])if file_path:try:with open(file_path, "w", encoding='utf-8') as file:content = self.txt_edit.get(1.0, tk.END)  # 获取文本框中的内容file.write(content.strip())  # 写入文件except Exception as e:messagebox.showerror("错误", f"无法保存文件: {e}")if __name__ == "__main__":root = tk.Tk()app = TextEditor(root)root.mainloop()

界面如下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

功能说明:

  1. 打开文件:点击“打开”按钮会弹出文件选择对话框,选择文件后会在文本框中显示其内容。
  2. 保存文件:点击“保存”按钮会弹出保存文件对话框,用户可以输入文件名并保存当前文本框中的内容。
  3. 布局:使用 .grid() 布局管理器将按钮放在左边,文本框放在右边,同时保证窗口大小自适应,且设置了最小高度和宽度。

确保你已经安装了 tkinter 库,这通常是 Python 的标准库之一,无需额外安装。运行以上代码即可启动文本编辑器。

原创不易,请点赞、关注、和转发!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql(3)—数据库相关概念及工作原理

一、数据库相关概念 ​ 数据库(Database, DB) : 数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。 数据库管理系统(Database Management System, DBMS) &#xf…

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

💯前言 在如今AI技术迅猛发展的背景下,尽管像ChatGPT这样的大型语言模型具备强大的生成能力,但它们的输出质量有时仍难以完全满足我们的预期。为了让ChatGPT生成更加准确、可靠的内容,掌握高效的Prompt编写技巧变得尤为重要。本文…

Rust 与生成式 AI:从语言选择到开发工具的演进

在现代软件开发领域,Rust 语言正在逐步崭露头角,尤其是在高性能和可靠性要求较高的应用场景。与此同时,生成式 AI 的崛起正在重新塑造开发者的工作方式,从代码生成到智能调试,生成式 AI 的应用正成为提升开发效率和质量…

【论文阅读笔记】Bigtable: A Distributed Storage System for Structured Data

文章目录 1 简介2 数据模型2.1 行2.2 列族2.3 时间戳 3 API4 基础构建4.1 GFS4.2 SSTable4.3 Chubby 5 实现5.1 Tablet 位置5.2 Tablet 分配5.3 为 tablet 提供服务5.4 压缩5.4.1 小压缩5.4.2 主压缩 6 优化6.1 局部性组6.2 压缩6.3 缓存6.4 布隆过滤器6.5 Commit日志实现6.6 T…

【OpenCV】(三)—— 截取图片内容

ROI,全称为region of interest,意为感兴趣的区域,通常为图像中需要特别关注或处理的部分。ROI技术常用于图像分析、目标检测、特征提取等场景,能够帮助减少计算量、提高处理速度和精度。 切片获取ROI图像 我们之前介绍过使用ope…

STM32传感器模块编程实践(四)舵机+MPU6050陀螺仪模块融合云台模型

文章目录 一.概要二.实验模型原理1.硬件连接原理框图2.控制原理 三.实验模型控制流程四.云台模型程序五.实验效果视频六.小结 一.概要 云台主要用来固定摄像头。准确地说,云台是一种可以多角度调节的支撑设备,类似于人的脖子可以支撑着脑袋,…

Java_ EE (网络编程)

网络编程基本概念: 计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。从其…

利用弹性盒子完成移动端布局(第二次实验作业)

需要实现的效果如下&#xff1a; 下面是首先是这个项目的框架&#xff1a; 然后是html页面的代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

springboot系列--web相关知识探索五

一、前言 web相关知识探索四中研究了请求中所带的参数是如何映射到接口参数中的&#xff0c;也即请求参数如何与接口参数绑定。主要有四种、分别是注解方式、Servlet API方式、复杂参数、以及自定义对象参数。web相关知识探索四中主要研究了复杂参数底层绑定原理。本次主要是研…

flask项目框架搭建

目录结构 blueprints python包&#xff0c;蓝图文件&#xff0c;相当于路由组的概念,方便模块化开发 例如auth.py文件 from flask import Blueprint, render_templatebp Blueprint("auth", __name__, url_prefix"/auth")bp.route("/login") d…

【双指针算法】移动零

1.题目解析 2.算法分析 可以归结为数组划分/数组分块&#xff08;采用双指针算法&#xff09;-->利用数组下标充当指针 &#xff08;1&#xff09;首先定义两个指针 dest&#xff1a;已处理的区间内&#xff0c;非零元素的最后一个位置cur&#xff1a;从左往右扫描数组&…

工业软件界面盲目追求美观性,或许是误入歧途。

在工业软件领域&#xff0c;界面盲目追求美观性确实可能是误入歧途。 工业软件的核心目的是为了满足工业生产、管理和控制等实际需求。 首先&#xff0c;实用性和功能性应该是工业软件界面设计的首要考虑因素。界面需要清晰地展示关键数据、操作按钮和流程指示&#xff0c;以…

K8s-services+pod详解1

一、Service 我们能够利用Deployment创建一组Pod来提供具有高可用性的服务。 虽然每个Pod都会分配一个单独的Pod IP&#xff0c;然而却存在如下两问题&#xff1a; Pod IP 会随着Pod的重建产生变化Pod IP 仅仅是集群内可见的虚拟IP&#xff0c;外部无法访问 这样对于访问这…

SpringBoot原理篇

目录 配置优先级 bean的管理 获取bean bean作用域 第三方bean 法一 法二 SpringBoot原理 起步依赖 自动配置 概述 方案 ComponentScan 组件扫描 lmport 导入 原理分析 源码跟踪 Conditional 案例 配置优先级 虽然springboot支持多种格式配置文件&#xff0c…

Python画笔案例-081 绘制 3D红球

1、绘制 3D红球 通过 python 的turtle 库绘制 3D红球,如下图: 2、实现代码 绘制 3D红球,以下为实现代码: """3D红球.py本程序不断地打直径越来越小,亮度越来越高的圆点。最后就形成了有种3D效果的圆球。 """ import turtle from coloradd …

亚马逊测评:虚拟支付卡的使用

在亚马逊测评自养号体系中&#xff0c;虚拟支付卡的使用越来越普遍&#xff0c;成为了一种重要的支付工具。以下是对虚拟支付卡的详细分析&#xff0c;包括其背景、使用方式、优势以及注意事项。 一、为什么要使用虚拟支付卡 亚马逊平台对支付方式有严格的规定&#xff0c;要求…

C# (.net6)实现Redis发布和订阅简单案例

概念&#xff1a; 在 .NET 6 中使用 Redis 的/订发布阅模式。发布/订阅&#xff08;Pub/Sub&#xff09;是 Redis 支持的一种消息传递模式&#xff0c;其中一个或多个发布者向一个或多个订阅者发送消息,Redis 客户端可以订阅任意数量的频道。 多个客户端可以订阅一个相同的频道…

geometry()、frameGeometry()、pos()、size()、rect()的区别

QWidget为单独的窗口展示 QWidget的这几个方法都与窗口的几何信息有关&#xff0c;作为单独的窗口展示时&#xff0c;我们来看一下他们的一些区别 geometry()&#xff1a;获取的矩形不包括窗口自带的标题栏&#xff0c;只包括窗口的内容区frameGeometry()&#xff1a;获取的矩…

Spring Boot知识管理系统:技术与方法论

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

昇思MindSpore进阶教程--数据处理性能优化(中)

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 shuffle性能优化 shuffle操作主要是对有…