Python GUI标准库tkinter实现与记事本相同菜单的文本编辑器(一)
介绍:
Windows操作系统中自带了一款记事本应用程序,通常用于记录文字信息,具有简单文本编辑功能。Windows的记事本可以新建、打开、保存文件,有复制、粘贴、删除等功能,还可以设置字体类型、格式和查看日期时间等。
本篇文章主要实现了与记事本一样的UI界面和菜单,关注我,我将持续完善“文本编辑器”全部功能,敬请耐心等待!
运行结果:

项目代码
"""文本编辑器
"""# 通配符
__all__ = ['main']# 设置文本域窗口大小
def setTextSize(event, object):print(event.width, event.height)print(event.width // 10, event.height // 19)object.config(width=event.width // 10, height=event.height // 19)# 主函数
def main():import tkinter as tkfrom tkinter import fontbase = tk.Tk() # 新建一个窗口base.title('文本编辑器') # 窗口标题base.geometry(f'750x550+{base.winfo_screenwidth()//4}+{base.winfo_screenheight()//8}')# 新建顶级菜单topMenu = tk.Menu(base)base.config(menu=topMenu)# 二级菜单 文件fileMenu = tk.Menu(topMenu, tearoff=0)fileMenu.add_command(label=f'新建(N){" "*28}Ctrl+N')fileMenu.add_command(label=f'新窗口(W){" "*16}Ctrl+Shift+N')fileMenu.add_command(label=f'打开(O)...{" "*26}Ctrl+O')fileMenu.add_command(label=f'保存(S){" "*29}Ctrl+S')fileMenu.add_command(label=f'另存为(A)...{" "*15}Ctrl+Shift+S')fileMenu.add_command(label=f'页面设置(U)...')fileMenu.add_command(label=f'打印(P)...{" "*27}Ctrl+P')fileMenu.add_command(label=f'退出(X)')topMenu.add_cascade(label='文件(F)', menu=fileMenu)# 二级菜单 编辑editMenu = tk.Menu(topMenu, tearoff=0)editMenu.add_command(label=f'撤销(U){" "*26}Ctrl+Z')editMenu.add_command(label=f'剪切(T){" "*26}Ctrl+X')editMenu.add_command(label=f'复制(C){" "*26}Ctrl+C')editMenu.add_command(label=f'粘贴(V){" "*26}Ctrl+V')editMenu.add_command(label=f'删除(L){" "*27}Delete')editMenu.add_command(label=f'使用 Bing 搜索...{" "*14}Ctrl+E')editMenu.add_command(label=f'查找(F)...{" "*25}Ctrl+F')editMenu.add_command(label=f'查找上一个(N){" "*23}F3')editMenu.add_command(label=f'查找下一个(V){" "*15}Shift+F3')editMenu.add_command(label=f'替换(R)...{" "*23}Ctrl+H')editMenu.add_command(label=f'转到(G)...{" "*23}Ctrl+G')editMenu.add_command(label=f'全选(A){" "*26}Ctrl+A')editMenu.add_command(label=f'时间/日期(D){" "*25}F5')topMenu.add_cascade(label='编辑(E)', menu=editMenu)# 二级菜单 格式integer1 = tk.IntVar()formatMenu = tk.Menu(topMenu, tearoff=0)formatMenu.add_checkbutton(label='自动换行(W)', variable=integer1, onvalue=0, offvalue=1)formatMenu.add_command(label='字体(F)...')topMenu.add_cascade(label='格式(O)', menu=formatMenu)# 二级菜单 查看integer2 = tk.IntVar()checkMenu = tk.Menu(topMenu, tearoff=0)checkMenu.add_command(label='缩放(Z)')checkMenu.add_checkbutton(label='状态栏(S)', variable=integer2, onvalue=0, offvalue=1)topMenu.add_cascade(label='查看(V)', menu=checkMenu)# 二级菜单 帮助helpMenu = tk.Menu(topMenu, tearoff=0)helpMenu.add_command(label='查看帮助(H)')helpMenu.add_command(label='发送反馈(F)')helpMenu.add_command(label='关于文本编辑器(A)')topMenu.add_cascade(label='帮助(H)', menu=helpMenu)# 文本编辑区域setFont = font.Font(family='Tahoma', size=12, weight='bold')textData = tk.Text(base, wrap=tk.WORD, font=setFont)textData.grid()# 初始化设置# textData.config(width=106, height=42, background='red', font=setFont)# textData.config(width=75, height=29, background='red', font=setFont)# 绑定调整文本域大小到窗口大小变化事件base.bind("<Configure>", lambda event: setTextSize(event, textData))base.mainloop() # 窗口主循环# 代码测试
if __name__ == '__main__':main()
else:print(f'导入{__name__}模块')
作者:周华
创作日期:2023/11/8
相关文章:
Python GUI标准库tkinter实现与记事本相同菜单的文本编辑器(一)
介绍: Windows操作系统中自带了一款记事本应用程序,通常用于记录文字信息,具有简单文本编辑功能。Windows的记事本可以新建、打开、保存文件,有复制、粘贴、删除等功能,还可以设置字体类型、格式和查看日期时间等。 …...
Decimal.ToString()堆栈溢出异常
Decimal.ToString() 堆栈溢出异常 导致以下报错: A process serving application pool XXX suffered a fatal communication error with the Windows Process Activation Service. The process id was 7132. The data field contains the error number. Application pool …...
com.genuitec.eclipse.springframework.springnature
Your IDE is missing natures to properly support your projects. Some extensions on the eclipse marketplace can be installed to support those natures. com.genuitec.eclipse.springframework.springnature 移除 <nature>om.genuitec.eclipse.springframework.…...
wangeditor富文本编辑器的使用(vue)
官网 官方demo 参考 安装 yarn add wangeditor/editor yarn add wangeditor/editor-for-vue 封装的富文本组件 <template><div style"border: 1px solid #ccc"><Toolbarstyle"border-bottom: 1px solid #ccc":editor"editorRef"…...
物联网水表有什么弊端吗?
物联网水表作为新一代智能水表,虽然在很大程度上提高了水资源的管理效率,但也存在一定的弊端。在这篇文章中,我们将详细讨论物联网水表的弊端,以帮助大家更全面地了解这一技术。 一、安全隐患 1.数据泄露:物联网水表通…...
安卓 车轮视图 WheelView kotlin
安卓 车轮视图 WheelView kotlin 前言一、代码解析1.初始化2.初始化数据3.onMeasure4.onDraw5.onTouchEvent6.其他 6.ItemObject二、完整代码总结 前言 有个需求涉及到类似这个视图,于是在网上找了个轮子,自己改吧改吧用,拿来主义当然后&…...
升级Redisson版本兼容问题
升级版本:从 3.10.6 升级到3.18.0 报错: java.io.IOException: Unsupported protocol version 252 java.io.IOException: Unsupported protocol version 252at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1375)at org.redisson…...
前端框架Bootstrap
前端框架Bootstrap 该框架已经帮我们写好了很多页面样式,如果需要使用,只需要下载对应文件 直接CV拷贝即可 在使用Bootstrap的时候,所有的页面样式只需要通过修改class属性来调节即可 什么是Bootstrap Bootstrap是一个开源的前端框架…...
Flink SQL TopN语句详解
TopN 定义(⽀持 Batch\Streaming): TopN 对应离线数仓的 row_number(),使⽤ row_number() 对某⼀个分组的数据进⾏排序。 应⽤场景: 根据 某个排序 条件,计算 某个分组 下的排⾏榜数据。 SQL 语法标准&am…...
k8s之数据卷
一,存储卷 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态&#…...
服务器网络
配置 通常使用ping查看网络 如果能ping通,不能ssh登陆,安装 sudo apt update sudo apt install openssh-server如果已经安装,查看防火墙状态,inactive(不活跃) sudo ufw status sudo ufw allow ssh sudo ufw reload查看ssh状态 s…...
YOLOv8-seg 分割代码详解(一)Predict
前言 本文从 U-Net 入手熟悉分割的简单方法,再看 YOLOv8 的方法。主要梳理 YOLOv8 的网络结构,以及 Predict 过程的后处理方法。 U-Net 代码地址:https://github.com/milesial/Pytorch-UNet YOLOv8 代码地址:https://github.com/…...
Docker学习——④
文章目录 1、Docker Image(镜像)2、镜像命令详解2.1 docker rmi2.2 docker save2.3 docker load2.4 docker image inspect2.5 docker history2.6 docker image prune 3、镜像综合实战3.1 离线镜像迁移3.2 镜像存储的压缩与共享 1、Docker Imageÿ…...
Android选项卡TabHost
选项卡主要由TabHost(标签,主人),TabWidget(微件)和FrameLayout3个组件组成,用于实现一个多标签页的用户界面。 1. TabHost在XML文件中添加: XML布局文件中添加选项卡时必须使用系统id来为各组件指定id属性。 <TabHostandro…...
qml添加滚动条
import QtQuick.Controls 2.15ScrollBar.vertical: ScrollBar {visible: flick1.contentHeight > flick1.heightanchors.right: parent.rightanchors.rightMargin: 40width: 10active: truecontentItem: Rectangle {radius: 6opacity: 0.5color: "#7882A0"} }...
elementui-plus el-tree组件数据不显示问题解决
当前情况: 显示: 注意看右侧的树是没有文字的,数据已经渲染,个数是对的,但就是没有文字, 解决: 对比以后发现是template中的#default{data}没有写大括号导致的 所以写上大括号后: 正常显示...
EMR 磁盘挂载解读与磁盘扩容操作
云上的计算实例挂载的存储盘通常可以在线实现磁盘扩容。本文以 AWS EMR 节点的磁盘扩容为例,记录一下具体的操作步骤。在详细介绍前,先将重要的总结发在前面,便于以后查阅: EMR 磁盘分配规则是: 第一磁盘(/dev/nvme0n1),必备,大小由控制台的"EBS root volume&qu…...
小程序day04
目标 自定义组件 创建组件 引用组件 局部引用 全局引用 组件的函数定义到metods节点中,梦回vue2. 样式 数据,方法,属性 下划线开头的称为自定义方法,非下划线开头的都是事件处理函数。 神特么,this.datathis.pro…...
哪些人更容易受到网络攻击?
当下,企业的安全已从传统的外部网络安全威胁防御,逐渐延伸到内部威胁防御。很多时候IT基础设施被攻陷不是外部造成,而是内部使然,这些内部威胁要复杂得多且难以管理。那么,哪些员工最脆弱、最有可能给企业组织带来网络…...
sql语句-实体属性有集合怎么批量查询
1、背景 前端返回一个实体类,实体类里还有集合。要对集合外的属性查询,还要对集合批量查询,并且属性可能为空。返回给前端的结果是个实体类,实体类里有集合。 2、前端实体类 public class AppletSyncDiseaseInfoBO {// 病害信息…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
