python tkinter实现文本编辑器

news2024/11/18 14:36:12

题目

请设计并实现一款文本编辑器。程序允许用户打开、保存文本文件。

例如:

在这里插入图片描述

在用户打开文件时,会呈现打开文件对话框,

在用户保存文件时,会呈现保存为对话框

当打开文件出错时,程序不会崩溃,而是会提示错误信息,

当保存文件出错时,程序不会崩溃,而是会提示错误信息,

要求:

1.当再次打开另一个文件时,程序应当显示正确。

2.当打开和保存文件失败时,程序不应崩溃,而应提示错误信息。

3.使用tkinter.filedialog模块中的askopenfilename方法h和asksaveasfilename方法可以打开“打开文件”和“保存为文件“对话框。

4.使用异常处理,保证程序正常运行。

请将提交的实验报告命名为如下格式。

学号+姓名+实验7

例如:123456789+王思聪+实验7

from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import asksaveasfilename
import tkinter.messagebox


class FileEditor:
    def __init__(self):
        window = Tk()
        menubar = Menu(window)
        window.config(menu=menubar)  
        operationMenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label="File", menu=operationMenu)
        operationMenu.add_command(label="Open", command=self.openFile)
        operationMenu.add_command(label="Save", command=self.saveFile)
        frame0 = Frame(window) 
        frame0.grid(row=1, column=1, sticky=W)
        openImage = PhotoImage(file="image/open.png")
        saveImage = PhotoImage(file="image/save.png")
        Button(frame0, image=openImage,
               command=self.openFile).grid(row=1, column=1, sticky=W)
        Button(frame0, image=saveImage,
               command=self.saveFile).grid(row=1, column=2)
        frame1 = Frame(window)
        frame1.grid(row=2, column=1)
        scrollbar = Scrollbar(frame1)
        scrollbar.pack(side=RIGHT, fill=Y)
        self.text = Text(frame1, width=40, height=20,
                         wrap=WORD, yscrollcommand=scrollbar.set)
        self.text.pack()
        scrollbar.config(command=self.text.yview)
        window.mainloop()  

    def openFile(self):
        filenameforreading = askopenfilename()
        try:
            infile = open(filenameforreading, "r", encoding="UTF-8")
            self.text.delete(1.0, "end")
            self.text.insert(END, infile.read()) 
            infile.close() 
        except:
            self.errorHandle("打开文件失败!")
    def saveFile(self):
        filenameforwriting = asksaveasfilename()
        try:
            outfile = open(filenameforwriting, "w")
            outfile.write(self.text.get(1.0, END))
            outfile.close()  
        except:
            self.errorHandle("保存文件失败!")
    def errorHandle(self, message):  
        tkinter.messagebox.showerror(title="error", message=message)


FileEditor()

直接运行程序是无法成功的,需要在同路径下新建一个文件夹 image,在该文件夹下放入打开按钮和保存按钮的图标,这个自行网上查找即可
代码仅供参考

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】CSV,TSV语料读取的简单操作——内建包csv的使用

背景 在做文本相关的任务时,难免会遇见csv,tsv等格式的数据,但有时只是读取,然后传入到下一个任务中而已,并不会做过多的操作。在这种情况下,可以使用pandas读取,但是难免有些臃肿,…

切记不要接受任何降薪,不要同意任何调岗,更不要害怕HR威胁背调,跟HR聊天都要录音!...

最近很多人都遭遇了裁员和降薪,一位网友给大家提出了几点建议:1.不要接受任何降薪,不要签字同意。如果公司敢降薪就直接去仲裁,但如果签字之后,降薪就属于你情我愿了。2.不要签字同意调岗,调岗会不会有薪水…

【博客559】更出色的网络监控采集方案---Telemetry(遥测技术)

网络监控方案—Telemetry(遥测技术) 1、几种不同采集方式对比:CLI,SNMP,SYSLOG,Telemetry CLI: 作为应用最广使用最久的网络监控技术,最大的问题就是兼容性,同类产品不同厂商之间的兼容性&…

web前端-javascript-创建Array数组和元素类型(字面量创建,构造函数创建,元素可以是任意数据类型,二维数组)

文章目录创建 Array 数组1. 普通方法2. 使用字面量来创建数组3. 使用构造函数来创建数组数组的元素类型1. 创建一个长度为 10 的数组2. 数组中的元素可以是任意的数据类型2.1. 数组中的元素也可以是对象2.2. 也可以是一个函数2.3. 数组中也可以放数组,如下这种数组我们称为二维…

早餐店+饮品+烘焙,如何做多群体早中晚生意?

早餐吃好、午餐吃饱、晚餐少吃,如今早餐店已经不再局限于豆浆油条、鸡蛋面包,同时还有饮品,芳芳珍早鲜奶店是一家早餐店,30个SKU销量很高,一天中有近75%的销售都集中在早餐场景。 这家早餐店是如何做的? 01…

【交通标志识别】BP神经网络交通标志识别(带面板)【含GUI Matlab源码 1647期】

⛄一、BP神经网络交通标志识别简介 道路交通标志用以禁止、警告、指示和限制道路使用者有秩序地使用道路, 保障出行安全.若能自动识别道路交通标志, 则将极大减少道路交通事故的发生.但是由于道路交通错综复杂, 且智能识别技术尚未成熟, 为了得到高效实用的道路标志识别系统, …

笔试训练(2)

// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {StringBuffer s1new StringBuffer("A");StringBuffer s2new StringBuffer("B");process(s1,s2);System.out.println(s1);System.out.pr…

推翻OpenAI结论,DeepMind重新定义预训练的参数和规模关系!

文|王思若前言从20年开始,“最大语言模型”的桂冠被各大研究机构和科技公司竞相追逐,堆砌参数,猛上算力,开启了“大炼丹”时代,模型参数量仿佛越大越好,甚至GPT-4模型参数量将超过100万亿的传闻…

14年本科毕业,3个月转行软件测试月薪13.5k,32的岁我终于找对了方向

​职场奋斗的过程,其实就是不停地做选择,做判断的过程。决定你发展的,多数取决于你的判断和眼光。你任何的投入,都决定了你未来的格局和结局。今天跟大家分享的我的转行故事,一起来看看吧。 为了新的目标和方向&#x…

PDF怎么拆分/合并? 3款 PDF 拆分和合并工具分享

以PDF格式传输文档已广泛使用很长时间,也是传输文档的最常见方式之一。但是,当涉及到从众多PDF文件中提取特定页面并将它们放在一起以制作新的PDF文档时,我们将需要专用软件来合并和拆分多个PDF。 现在,如果您想知道,…

叶面积指数(LAI)介绍以及遥感估算方法

前言 叶面积指数精度是正确预测产量的重要参数之一。 同时,还有那么多疑问,如何才能正确? 以及如何使用最有效的方法计算叶面积指数(LAI)? 什么是最佳 LAI? 哪些估算叶面积指数精度的方法比较好…

Matplotlib基础绘图函数示例

1. pyplot基础图表函数概述 2. pyplot饼图的绘制 3. pyplot直方图的 绘制 4. pyplot极坐标图的绘制 5. pyplot散点图的绘制 单元小结

[附源码]Python计算机毕业设计果蔬预约种植管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

内部分享讲解DevOps后,我再组织成文

DevOps 已然家喻户晓,如果你还没听过,那确实要去补补课。随着敏捷研发的普及,一种快速响应业务、高效运维的模式必然深得众心,Git 的发展近来几乎在代码管理领域一骑绝尘,在此基础上衍生出 GitOps 的概念,成…

MR案例:计算学生成绩(总分和平均分)

文章目录一、提出任务二、完成任务(一)准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录(二)实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建成绩映射器类5、创建成绩驱动器类6、启动成绩驱动器类…

JVM本地锁(一)简单实现

JVM本地锁由ReentrantLock或synchronized实现 模拟场景 假设有个共享库存资源,多线程进行访问,每次访问库存-1. Data public class StockDemo {private Integer stock 5000; }再controller -> service 进行访问调度 Service public class StockD…

题:付账问题

1235. 付账问题 - AcWing题库 几个人一起出去吃饭是常有的事。 但在结帐的时候,常常会出现一些争执。 现在有 nn 个人出去吃饭,他们总共消费了 SS 元。 其中第 ii 个人带了 aiai 元。 幸运的是,所有人带的钱的总数是足够付账的&#xff…

ctf笔记:php

ctf笔记:php 博客链接:https://www.blog.23day.site/articles/80 语法 攻防世界:easy_php 攻防世界:simple_php $a $b等于TRUE,如果类型转换后 $a 等于 $b。$a $b全等TRUE,如果 $a 等于 $b&#xff0c…

【封神台】辛巴猫舍-SQL注入

本节学习目标: 判断是否存在SQL漏洞,以便注入获取数据库的内容本节需知: SQL注入%20为空格的url代码环境为打靶环境1. 判断是否存在SQL漏洞 http://cntj8003.ia.aqlab.cn/index.php?id1%20and%2011 http://cntj8003.ia.aqlab.cn/index.php…

注册VMware虚拟机时报错“指定的项、名称或标识符已存在“

环境 VMware虚拟化平台 问题描述 收到业务侧报障,多台Linux虚拟机无法登录。经查询,报障的Linux操作系统均部署在VMware虚拟化平台,承载的宿主机已宕机且无法启动,虚拟机为断连状态。虚拟机移除清单,离线迁移&#…