当前位置: 首页 > news >正文

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实现与记事本相同菜单的文本编辑器(一)

介绍&#xff1a; Windows操作系统中自带了一款记事本应用程序&#xff0c;通常用于记录文字信息&#xff0c;具有简单文本编辑功能。Windows的记事本可以新建、打开、保存文件&#xff0c;有复制、粘贴、删除等功能&#xff0c;还可以设置字体类型、格式和查看日期时间等。 …...

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"…...

物联网水表有什么弊端吗?

物联网水表作为新一代智能水表&#xff0c;虽然在很大程度上提高了水资源的管理效率&#xff0c;但也存在一定的弊端。在这篇文章中&#xff0c;我们将详细讨论物联网水表的弊端&#xff0c;以帮助大家更全面地了解这一技术。 一、安全隐患 1.数据泄露&#xff1a;物联网水表通…...

安卓 车轮视图 WheelView kotlin

安卓 车轮视图 WheelView kotlin 前言一、代码解析1.初始化2.初始化数据3.onMeasure4.onDraw5.onTouchEvent6.其他 6.ItemObject二、完整代码总结 前言 有个需求涉及到类似这个视图&#xff0c;于是在网上找了个轮子&#xff0c;自己改吧改吧用&#xff0c;拿来主义当然后&…...

升级Redisson版本兼容问题

升级版本&#xff1a;从 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 该框架已经帮我们写好了很多页面样式&#xff0c;如果需要使用&#xff0c;只需要下载对应文件 直接CV拷贝即可 在使用Bootstrap的时候&#xff0c;所有的页面样式只需要通过修改class属性来调节即可 什么是Bootstrap Bootstrap是一个开源的前端框架…...

Flink SQL TopN语句详解

TopN 定义&#xff08;⽀持 Batch\Streaming&#xff09;&#xff1a; TopN 对应离线数仓的 row_number()&#xff0c;使⽤ row_number() 对某⼀个分组的数据进⾏排序。 应⽤场景&#xff1a; 根据 某个排序 条件&#xff0c;计算 某个分组 下的排⾏榜数据。 SQL 语法标准&am…...

k8s之数据卷

一&#xff0c;存储卷 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的状态&#xff08;镜像最初的状态&#…...

服务器网络

配置 通常使用ping查看网络 如果能ping通&#xff0c;不能ssh登陆&#xff0c;安装 sudo apt update sudo apt install openssh-server如果已经安装&#xff0c;查看防火墙状态&#xff0c;inactive(不活跃) sudo ufw status sudo ufw allow ssh sudo ufw reload查看ssh状态 s…...

YOLOv8-seg 分割代码详解(一)Predict

前言 本文从 U-Net 入手熟悉分割的简单方法&#xff0c;再看 YOLOv8 的方法。主要梳理 YOLOv8 的网络结构&#xff0c;以及 Predict 过程的后处理方法。 U-Net 代码地址&#xff1a;https://github.com/milesial/Pytorch-UNet YOLOv8 代码地址&#xff1a;https://github.com/…...

Docker学习——④

文章目录 1、Docker Image&#xff08;镜像&#xff09;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&#xff…...

Android选项卡TabHost

选项卡主要由TabHost(标签&#xff0c;主人)&#xff0c;TabWidget(微件)和FrameLayout3个组件组成&#xff0c;用于实现一个多标签页的用户界面。 1. TabHost在XML文件中添加&#xff1a; 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节点中&#xff0c;梦回vue2. 样式 数据&#xff0c;方法&#xff0c;属性 下划线开头的称为自定义方法&#xff0c;非下划线开头的都是事件处理函数。 神特么&#xff0c;this.datathis.pro…...

哪些人更容易受到网络攻击?

当下&#xff0c;企业的安全已从传统的外部网络安全威胁防御&#xff0c;逐渐延伸到内部威胁防御。很多时候IT基础设施被攻陷不是外部造成&#xff0c;而是内部使然&#xff0c;这些内部威胁要复杂得多且难以管理。那么&#xff0c;哪些员工最脆弱、最有可能给企业组织带来网络…...

sql语句-实体属性有集合怎么批量查询

1、背景 前端返回一个实体类&#xff0c;实体类里还有集合。要对集合外的属性查询&#xff0c;还要对集合批量查询&#xff0c;并且属性可能为空。返回给前端的结果是个实体类&#xff0c;实体类里有集合。 2、前端实体类 public class AppletSyncDiseaseInfoBO {// 病害信息…...

QQ音乐加密文件终极解密指南:qmcdump让你的音乐重获自由 [特殊字符]

QQ音乐加密文件终极解密指南&#xff1a;qmcdump让你的音乐重获自由 &#x1f3b5; 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qm…...

告别Swagger默认丑界面!.NET Core 6项目集成Knife4jUI保姆级教程

.NET Core 6项目集成Knife4jUI&#xff1a;打造专业级API文档体验 在当今快节奏的开发环境中&#xff0c;API文档的质量直接影响着团队协作效率。许多.NET Core开发者虽然已经使用Swagger生成基础文档&#xff0c;却常常面临界面简陋、功能单一的问题。Knife4jUI作为Swagger UI…...

Hypnos-i1-8B开发环境配置:VSCode远程连接与调试教程

Hypnos-i1-8B开发环境配置&#xff1a;VSCode远程连接与调试教程 1. 引言 如果你正在使用Hypnos-i1-8B这样的开源大模型&#xff0c;可能会遇到一个常见问题&#xff1a;本地电脑配置不够&#xff0c;而远程服务器上的开发体验又不够友好。今天我们就来解决这个痛点&#xff…...

STEP3-VL-10B部署与调用全攻略:WebUI交互和cURL API调用示例

STEP3-VL-10B部署与调用全攻略&#xff1a;WebUI交互和cURL API调用示例 1. 引言&#xff1a;为什么选择STEP3-VL-10B&#xff1f; STEP3-VL-10B是阶跃星辰推出的轻量级多模态模型&#xff0c;虽然只有10B参数&#xff0c;但在多项基准测试中表现优异。对于开发者而言&#x…...

GPT-5越狱攻击PROMISQROUTE深度解析:从提示词工程到AI安全防御

1. 项目概述&#xff1a;一次针对GPT-5的“越狱”概念验证最近在安全研究社区里&#xff0c;一个名为“PROMISQROUTE”的GPT-5越狱概念验证&#xff08;PoC&#xff09;引起了我的注意。这本质上是一个精心设计的提示词工程攻击&#xff0c;它通过角色扮演和规则重构&#xff0…...

从SerDes眼图到代码同步:一个硬件工程师的JESD204B物理层与链路层联调笔记

从SerDes眼图到代码同步&#xff1a;一个硬件工程师的JESD204B物理层与链路层联调笔记 当一块搭载JESD204B接口的ADC评估板首次上电时&#xff0c;示波器上跳动的眼图与逻辑分析仪中闪烁的SYNC信号&#xff0c;往往预示着一段充满挑战的调试旅程的开始。在12.5Gbps速率等级下&a…...

第15集:时序数据库选型实战!InfluxDB vs TDengine vs Prometheus 到底选谁

第15集:时序数据库选型实战!InfluxDB vs TDengine vs Prometheus 到底选谁 本集解锁内容:手把手安装三款主流时序库,用相同的运维指标数据跑分对比写入速度、查询性能、存储空间;给出面试中关于技术选型的万能回答模板。学完本集,你能在面对“为什么选这个库”的追问时,…...

告别环境变量困扰:手把手教你将gcc-arm-8.3工具链永久添加到Linux系统路径(含多用户配置)

彻底解决Linux下ARM工具链环境配置&#xff1a;从单用户到多用户的全局部署指南 每次打开新终端都要重新配置环境变量&#xff1f;团队成员抱怨工具链无法共享&#xff1f;作为嵌入式开发者&#xff0c;我们经常需要处理这类基础但令人头疼的问题。本文将带你深入理解Linux环境…...

数字音乐格式困境与用户主权革命:QMCDecode如何重塑音乐文件所有权范式

数字音乐格式困境与用户主权革命&#xff1a;QMCDecode如何重塑音乐文件所有权范式 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&…...

终极指南:如何在Windows文件资源管理器中快速预览STL模型缩略图

终极指南&#xff1a;如何在Windows文件资源管理器中快速预览STL模型缩略图 【免费下载链接】STL-thumbnail Shellextension for Windows File Explorer to show STL thumbnails 项目地址: https://gitcode.com/gh_mirrors/st/STL-thumbnail 还在为查找特定STL模型文件而…...