python记事本,采用tkinter组件,完成菜单栏,上下文菜单,状态栏,快捷键

Python GUI开发入门:从Tkinter到实战文本编辑器 图形用户界面(GUI)是连接用户与程序功能的桥梁,其核心原理在于事件驱动模型,通过监听用户操作并触发相应响应来实现交互。掌握GUI开发能显著提升Python脚本的实用性和可访问性,将后台数据处理能力转化为直观的桌面应用。在Python生态中,Tkinter作为标准库,以其零依赖和清晰的API结构,成为学习事件绑定、控件布局等GUI核心概念的理想起点。无论是构建内部工具还是开发小型桌面软件,理解Tkinter的几何管理器和变量绑定机制都至关重要。本文聚焦于Tkinter,通过一个完整的文本编辑器项目实战,系统 阅读详情
import tkinter as tk 
import tkinter.scrolledtext as tst

#v = tk.StringVar()
class Application(tk.Frame):
    def __init__(self, master=None):  
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()     
        self.createMenu()         
        root['menu'] = self.menubar 
        root.bind('<Button-3>', self.f_popup)
        #root.bind('<Button-1>', self.callback)

         # 状态栏
        self.status = tk.StringVar()
        self.status.set('Ln: 1 Col: 1')
        self.lblStatus = tk.Label(self, textvariable=self.status, anchor='c')
        self.lblStatus.grid(row=7, column=0, columnspan=20, sticky = tk.S + tk.E)
        root.bind('<Key>', self.loc)
        root.bind('<Button-1>', self.loc)
        
    def createWidgets(self):             
        self.textEdit = tst.ScrolledText(self, width=80, height=25)
        self.textEdit.grid(row=0, column=0, rowspan=6)
        
        '''
        self.lblState = tk.Label(self, text="状态栏:")
        self.lblState.grid(row=7, column=0, columnspan=10)
        self.entryState = tk.Entry(self, textvariable=v)
        self.lblState.grid(row=7, column=11, columnspan=20)
        '''
        
    def createMenu(self):              
        self.menubar = tk.Menu(root)   
        #创建子菜单
        self.menufile  = tk.Menu(self.menubar)     
        self.menuedit = tk.Menu(self.menubar, tearoff=0) 
        self.menuhelp = tk.Menu(self.menubar, tearoff=0)
        self.menubar.add_cascade(label='File', menu=self.menufile)
        self.menubar.add_cascade(label="Edit", menu=self.menuedit)
        self.menubar.add_cascade(label="Help", menu=self.menuhelp)
        
        #添加菜单项
        self.menufile.add_command(label='New', command=self.f_new)
        self.menufile.bind("<Control-N>", self.f_new)
        self.menufile.add_command(label='Open', command=self.f_open)
        self.menufile.bind("<Control-O>", self.f_open)
        self.menufile.add_command(label='Save', accelerator='^A', 
command=self.f_save)
        self.menufile.bind("<Control-S>", self.f_save)
        #分隔
        self.menufile.add_separator()  
        self.menufile.add_command(label='Exit', command=root.destroy) 
        self.menuedit.add_command(label="Cut", command=self.f_cut, accelerator='Ctrl+T')
        self.menuedit.bind("<Control-T>", self.f_cut)
        self.menuedit.add_command(label="Copy", command=self.f_copy, accelerator='Ctrl+C')
        self.menuedit.bind("<Control-T>", self.f_copy)
        self.menuedit.add_command(label="Paste", command=self.f_paste, accelerator='Ctrl+V')
        self.menuedit.bind("<Control-T>", self.f_paste)
        self.menuedit.add_command(label="Delete", command=self.f_delete, accelerator='Ctrl+D')
        self.menuedit.bind("<Control-T>", self.f_delete)
        self.menuhelp.add_command(label="About", command=self.f_about)
    def f_new(self):
        root.title('untitle')       #新建文件title
        self.textEdit.delete(1.0, tk.END)  
    def f_open(self):           
        self.textEdit.delete(1.0, tk.END) 
        fname = tk.filedialog.askopenfilename(filetypes=[('Python源文件','.py')])
        with open(fname, 'r', encoding= 'utf-8') as f1: 
            str1 = f1.read()                
        self.textEdit.insert(0.0, str1)         
    def f_save(self):          
        str1 = self.textEdit.get(1.0, tk.END)   
        fname = tk.filedialog.asksaveasfilename(filetypes=[('Python源文件','.py')])
        with open(fname, 'w', encoding= 'utf-8') as f1:  #打开文件
            f1.write(str1)      
    def f_about(self):           
        tk.messagebox.showinfo('关于', '版本V 1.0.1')
    def f_cut(self):
        try:
            str1=self.textEdit.get(tk.SEL_FIRST, tk.SEL_LAST)
            self.textEdit.clipboard_clear()        
            self.textEdit.clipboard_append(str1)    
            self.textEdit.delete(tk.SEL_FIRST, tk.SEL_LAST)
        except: pass
    def f_copy(self):           
        try:
            str1=self.textEdit.get(tk.SEL_FIRST, tk.SEL_LAST)
            self.textEdit.clipboard_clear()        
            self.textEdit.clipboard_append(str1)   
        except: pass
    def f_paste(self):          
        str1 = self.textEdit.selection_get(selection='CLIPBOARD')
        try:           
            self.textEdit.replace(tk.SEL_FIRST, tk.SEL_LAST, str1)
        except:
            self.textEdit.insert(tk.INSERT, str1)
    def f_delete(self):          
        try:
            str1=self.textEdit.get(tk.SEL_FIRST, tk.SEL_LAST) 
            self.textEdit.delete(tk.SEL_FIRST, tk.SEL_LAST)
        except: pass
    #定位光标位置,缺点读字符串的位置。。,不知道换行在哪里,仍需加强条件调试。
    def loc(self,event=None):
        s = str(self.textEdit.index('insert')).split('.')
        statusXY = 'Ln: ' + str(s[0]) + 'Col: ' + str(s[1])
        self.status.set(statusXY)

    def f_popup(self, event):   
        self.menuedit.post(event.x_root, event.y_root)
        

root = tk.Tk()                
root.title('文本编辑器')
app = Application(master=root)   
app.mainloop()               

结果显示:
在这里插入图片描述

Python记事本 阅读详情

相关推荐

python如何创建问答窗口_用Tkinter如何创建GUI窗口的状态栏?

自己改良音乐下载器,有你说的状态功能,不过是类似Consle的那种,整个源码都搬过来。#导入库import requestsimport jsonimport tkinter as tkfrom tkinter import ttkimport tkinter.messagebox as msgboximport tkinter.filedialog as fileboxfrom tkinter ...

weixin_30979383的博客 769

Python图形用户界面设计的17个基础组件

Tkinter 是 Python 的标准 GUI 库,它简单易学,非常适合初学者。今天,我们将详细介绍 Tkinter 中的 17 个基础组件,并通过实际示例演示它们的使用方法。如果你使用的是 Python 3.x 版本,那么 Tkinter 已经内置在你的 Python 安装中,无需额外安装。web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。好了,今天的分享就到这里了,我们下期见。最后,我们需要启动 Tkinter 的主事件循环,使窗口保持打开状态。

m0_62283350的博客 1435

Tkinter是Python GUI入门的底层基石

GUI编程本质是事件驱动的状态映射,而非视觉呈现;其核心原理包括主事件循环、组件树结构与几何管理机制,这些概念贯穿所有主流框架。Tkinter作为Python标准库内置的轻量级GUI工具,以零依赖、跨平台、低内存和高启动性能著称,特别适合教学演示、内部工具开发及边缘设备部署。它强制开发者直面GUI底层模型,是理解PyQt、wxPython乃至Web前端响应式设计的思想源头。对于刚掌握基础语法、需快速交付稳定桌面应用或面向老旧硬件/离线环境的开发者而言,Tkinter不是过渡方案,而是不可替代的工程实践起点。

dianzongfan5428的博客 387

Tkinter -- Statusbar

from Tkinter import * root = Tk() label = Label(root,text='Ln20',bd=1,relief=SUNKEN,anchor=W) # anchor left align W -- WEST label.pack(side=BOTTOM,fill=X) root.mainloop()

知秋一叶的专栏 3220

Python GUI开发入门:Tkinter核心组件、布局与事件处理实战

图形用户界面(GUI)是连接用户与程序功能的桥梁,其核心在于通过可视化组件(Widgets)接收输入与展示信息。在Python生态中,Tkinter作为标准库内置的GUI工具包,因其开箱即用、学习曲线平缓而成为入门首选。其原理基于事件驱动模型,通过布局管理器(如pack、grid)组织组件,并利用事件绑定响应用户交互,技术价值在于能快速构建原型与实用工具,极大提升开发效率。应用场景广泛覆盖自动化脚本界面、教学演示、数据查看工具及内部管理系统等。本文聚焦Tkinter,通过详解按钮、输入框等核心组件,剖析gr

weixin_34112181的博客 436

从零构建桌面模拟器:Python Tkinter实践与GUI编程核心

图形用户界面(GUI)是软件与用户交互的核心层,其设计基于事件驱动编程模型,通过响应用户操作来更新界面状态。理解GUI组件管理、窗口系统与事件循环原理,对于掌握现代软件开发至关重要。这类技术不仅支撑着桌面应用开发,也是理解操作系统人机交互逻辑的基础。通过构建一个模拟操作系统桌面的“伪系统”项目,开发者可以直观实践GUI架构、模块化设计与工程组织。本文以Python Tkinter为技术栈,详细解析桌面画布、图标系统、任务栏与窗口管理器的实现,为初学者提供一条从概念到实践的清晰路径,帮助掌握事件处理、控件绑定

weixin_34026276的博客 348

《从 0 到 1 学 Python GUI:Tkinter 实战开发桌面记事本》

通过本指南,您将掌握从零开发完整桌面记事本的核心技能。建议按照功能模块分步实现,每完成一个模块进行测试验证,最终整合成完整应用。确保系统安装 Python 3.6+ 版本。

2501_93897623的博客 349

Tkinter进度条与状态栏

Tkinter界面设计入门教程。

AIGC 8189

Python 使用tkinter复刻Windows记事本UI和菜单功能(三)

复刻Windows记事本 BUG: 1、快捷键:Ctrl+O 打开文件实现时发现光标处会插入换行'\\n'(现在我仍未知是否是为解释器BUG) 未实现: 1、文件的新窗口无法实现(未使用线程) 2、无法实现单击菜单栏显示菜单项后与键盘交互(非快捷键),因为Menu无法与bind捆绑事件及交互 3、文件的页面设置的具体功能交互还没完成,只完成UI和交互框架 4、文件的打印还没实现(我不知道怎么连接外设) 4、除了文件以外的菜单还没实现

zhouhua2022的博客 653

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等

本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。

coder_bin的博客 1590

手把手教你用STM32单片机控制双向可控硅调光(附完整代码+电路图)

本文提供了一套完整的STM32单片机控制双向可控硅实现灯光无级调光的实战方案。详细讲解了硬件电路设计,包括过零检测与隔离驱动,并剖析了基于定时器中断的软件核心逻辑,通过精准的相位角计算实现平滑的灯光强度控制。附有完整代码与电路图,适合嵌入式开发者实践。

weixin_29194255的博客 955

用快马平台十分钟搞定windows桌面应用原型:一个tkinter记事本实例

上不需要手动配置Python环境,也不用处理依赖安装,直接描述需求就能获得可执行代码。特别是部署测试环节,一键就能看到实际运行效果,比本地调试还方便。对于需要快速验证创意的场景,这种"描述即得代码"的方式确实能节省大量前期准备时间。文件操作涉及新建、打开、保存等基础IO操作,编辑功能则需要兼容系统剪贴板交互。Tkinter作为Python内置GUI库,完全能满足这类轻量级需求。最近在做一个Windows平台的小工具时,突然需要快速验证一个记事本功能的原型。后,十分钟就得到了可运行的成品。

GoldEagle19的博客 28

基于ASP.NET+SQLServer的美妆网站的设计与实现

通过本次ASP.NET MVC美妆商城项目的开发,我们实现了一个功能完善、性能稳定的在线购物平台。该项目不仅提升了用户的购物体验,也为商家提供了一个高效的商品管理和销售渠道。未来,我们将持续优化系统功能,提升用户体验,以适应不断变化的市场需求。

毕业设计大牛哥 1499

PySide6和Tkinter核心组件的类比对照

PySide6 和 Tkinter 核心组件的类比对照表,方便快速对应两者的功能和用法,这是学习切换或对比选型时非常实用的参考并且按功能分类,清晰列出两者对应的核心组件

循环编织时间年轮,递归叩问存在本质,谁能在硅基荒原上,种出思想的玫瑰…… 717

Dify平台隐患url:/console/api/remote-files/upload暴露高危漏洞,配置nginx htpasswd模块认证机制屏蔽解决

内部网络探测: 攻击者可通过SSRF扫描内网服务云元数据访问: 可能访问AWS/Aliyun/腾讯云等元数据服务服务端请求伪造: 以服务器身份发起任意HTTP请求。

CN_Eden 1318

【硬件工程师面经整理18_Smith圆图】

若文中任何内容侵犯了您的合法权益,请相关权益人及时与我联系,我将立即进行核实并采取适当措施,包括但不限于删除相关内容或更新文章以消除影响。**在Smith圆图上,源阻抗表示为圆心,而负载阻抗表示为圆图上的一个点。具体来说,通过将负载阻抗在Smith圆图上移动到特定位置,使其与传输线特性阻抗形成纯电阻或纯电抗的组合,从而实现匹配。例如,反射系数表示为Smith圆图上的一个点,而驻波比则表示为圆图上两个点之间的距离。Smith圆图是用于阻抗匹配和网络分析的工具,它是一种将复阻抗表示为坐标的图形。

LeeYLong的博客 651

Tkinter窗口设计实战:从布局到交互的完整GUI开发指南

图形用户界面(GUI)是用户与软件交互的核心桥梁,其设计质量直接影响用户体验。窗口作为GUI的基本容器单元,通过布局管理器、事件绑定等机制实现内容组织与用户交互。在桌面应用开发中,合理的窗口设计能显著提升操作效率和软件质感,广泛应用于数据管理工具、办公软件、开发环境等场景。本文以Python Tkinter为例,通过【用户信息管理器】的实战案例,详细解析【三栏式布局】的实现方法,涵盖菜单栏、导航树、数据表格和详情面板等组件的集成,为开发者提供一套可复用的窗口设计解决方案。

Eric.Net的专栏 510

在 SAP 中,寄售业务(Consignment)与管道业务(Pipeline)都属于“物料先到、发票后到”的特殊采购模式,但两者的库存形态、物权转移时点、结算触发条件、系统配置完全不同

SAP中寄售业务与管道业务均属"先货后票"采购模式,但存在本质差异。寄售业务(如手机芯片)采用实物库存管理(标记"K"),物权在领用时转移,通过411K/201K移动类型触发负债;管道业务(如蒸汽)无实物库存,采用261P等移动类型直接消耗并生成应付。系统配置上,寄售需K类信息记录及GR收货,管道需P类信息记录且免GR。两者均通过MRKO汇总结算,但寄售按领用量计费,管道按提取量实时计费。核心区别在于库存形态与物权转移时点。

金牌架构师 557

AI辅助Python开发:3天打造Mac菜单栏音频切换工具并上架变现

桌面应用开发中,菜单栏工具因其低侵入性和便捷性,成为提升工作效率的常见选择。传统开发方案如原生框架或Electron,往往涉及复杂的界面构建和跨平台适配,开发周期较长。随着Python生态中轻量级库的成熟,结合AI编程助手,开发者现在可以快速实现功能原型并打包分发。这种技术路径特别适合需要快速验证产品想法的场景,例如开发系统工具类应用。通过使用rumps创建菜单栏界面、sounddevice处理音频设备查询,再借助py2app打包为独立应用,开发者能在极短时间内完成从编码到上架的完整流程。本文以Mac音频输

weixin_30879833的博客 417

把 ABAP 采购订单增强做成一条可控流水线:BAdI ME_PROCESS_PO_CUST 全流程实战

摘要: SAP MM模块的ME_PROCESS_PO_CUST BAdI提供了采购订单全生命周期的增强点,覆盖从ME2*N事务到BAPI调用的各类场景。该接口通过INITIALIZE、OPEN、PROCESS_*系列方法、CHECK等组成完整处理流水线,支持字段控制、业务校验、数据派生等功能。关键注意事项包括:PROCESS_*方法仅在相关对象变更时触发、字段控制需区分参考键与动态规则、避免递归调用等。该BAdI采用面向对象设计,通过IF_PURCHASE_ORDER_*等接口操作采购单据对象,而非直接修改

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 404

一文搞懂自适应激光控制技术,开启光学新时代

自适应激光控制技术作为现代光学领域的关键技术,以其独特的原理和高效的工作机制,在科研、工业等众多领域展现出了巨大的应用价值。通过对激光波前的实时测量与补偿,它成功克服了激光在传输和应用过程中面临的诸多挑战,显著提升了激光的光束质量和应用效果。在科研领域,它助力天文观测突破大气湍流的限制,让我们得以更清晰地窥探宇宙的奥秘;在激光核聚变研究中,为实现高效的核聚变反应提供了关键支持,为解决能源问题带来了新的希望。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2529

python做简易记事本

以下内容参考《辛星tkinter教程第二版》: from tkinter import * from tkinter.filedialog import * from tkinter.messagebox import * import os filename='' def author(): showinfo('大道至简','简易记事本第一版') d...

weixin_30556959的博客 417

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

终极PySimpleGUI菜单设计指南:5步打造专业级应用导航系统

还在为Python GUI应用的菜单设计而烦恼吗?PySimpleGUI的多级菜单系统让你轻松创建专业级导航体验!作为Python GUI开发中最直观易用的库,PySimpleGUI不仅简化了界面设计,更提供了强大灵活的菜单功能。本文将带你深入探索如何利用PySimpleGUI的菜单系统,从基础到高级,打造出令人惊艳的应用导航界面。 ## 🎯 为什么PySimpleGUI的菜单系统如此特别?

gitblog_01153的博客 369

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Tkinter 进阶:构建带菜单 / 对话框的桌面应用

此实现包含完整的菜单系统、多种对话框集成、状态管理等功能,可直接扩展为文本编辑器、数据查看器等桌面应用。窗口可实现更复杂的对话框交互逻辑。

2501_93895614的博客 157

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python tkinter实战:7个GUI小项目带你从入门到应用

图形用户界面(GUI)是连接用户与程序功能的重要桥梁,其核心在于事件驱动与组件化编程。Python作为一门简洁高效的编程语言,其标准库tkinter提供了构建原生桌面应用的基础框架。通过理解主窗口、组件(Widgets)和几何管理等核心概念,开发者可以快速搭建交互界面,将脚本工具产品化,提升内部工具的开发效率与用户体验。本文聚焦于**Python tkinter**的工程实践,通过**计算器**、文本编辑器、图片查看器等7个具体项目,系统演示了从环境搭建、事件绑定到数据持久化与打包发布的完整开发链路,旨在为

weixin_33946020的博客 396

Python GUI开发入门:Tkinter核心控件与布局实战详解

图形用户界面(GUI)开发是桌面应用构建的核心技术,它通过可视化控件实现人机交互。Python作为主流编程语言,其标准库Tkinter提供了轻量级的GUI解决方案,基于事件驱动模型实现界面响应。在快速原型开发和内部工具构建场景中,Tkinter凭借零依赖、学习曲线平缓的优势,成为Python开发者入门GUI的首选。通过掌握按钮、输入框、列表框等核心控件,结合pack、grid、place三种几何管理器进行布局,可以高效构建如登录表单、文本编辑器等实用工具。本文以Tkinter为例,详解控件使用与事件处理,并

weixin_34293141的博客 480
上一篇: Java 类型, Hibernate 映射类型及 SQL 类型之间的对应关系
下一篇: 基于有道翻译的网络爬虫的翻译器
niceboye
博客等级 码龄9年 13粉丝 56原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值