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

Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(一)

下一篇:Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(二)-CSDN博客

介绍:

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

http://www.lryc.cn/news/223762.html

相关文章:

  • 【系统架构设计】架构核心知识: 3.3 DSSA和ABSD
  • Git的安装和常用命令Git与SVN的区别Gitee远程仓库团队开发代码共享演示
  • 五、计算机网络
  • 使用Grafana与MySQL监控监控网络延迟
  • 互联网常见职称
  • UI设计软件有哪些好用和免费的吗?
  • Linux开发工具之编译器gcc/g++
  • 【Kurbernetes资源管理】陈述式资源管理方式
  • flink测试map转换函数和process函数
  • 【跟小嘉学习JavaWeb开发】第一章 开发环境搭建
  • CSS语法、选择器、属性
  • 深度学习读取txt训练数据绘制参数曲线图的方法
  • VB.NET—DataGridView控件教程详解
  • MCU测试科普|如何进行MCU芯片测试,具体流程是什么?
  • 单向循环代码实现cpp
  • 【原创】java+jsp+servlet简单图书管理系统设计与实现
  • JVM之jinfo虚拟机配置信息工具
  • 软件测试|PO设计模式在 UI 自动化中的实践
  • 如何上传自己的Jar到Maven中央仓库
  • 智能井盖传感器功能,万宾科技产品介绍
  • 洛谷P4185 离线+并查集
  • 遇到java.security.AccessControlException:access denied怎么办?
  • c++对接CAT1400
  • Linux基础【Linux知识贩卖机】
  • CSS 边框、轮廓线
  • Transformer架构 完整的处理流程
  • git and svn 行尾风格配置强制为lf
  • 达梦数据库答案
  • 基于SSM的楼房销售系统设计与实现
  • Blender做一个小凳子学习笔记