菜鸟IT的博客
"菜鸟IT"的博客 (WWW.17WX.NET)
熟悉HTML网站的前端美工到切图制作,搭配DIV+TABLE+CSS,熟悉Fireworks和Dreamwear的网站制作实战应用,专注于学习和记录JS脚本对于网页改造的各种新奇技术.平时的工作既要做销售,也要做前端开发,也要做后期的客户售后维护,此博客为博主自己平时的IT工作的实战学习笔记,记录自己工作和学习中遇到的各种坑,也分享给有需要的新人...
博客首页 网站前端制作 网赚 软件应用 Windows系统 Python
谷歌联盟提供的广告↓
[网站前端制作]有关标签↓
[网赚]有关标签↓
[软件应用]有关标签↓
[Windwos系统]有关标签↓
 | 
菜鸟IT的博客 >> Python

tkinter实现简单记事本相关功能 | 打开txt 编辑txt 保存txt
# -*- coding:utf-8 -*-
import tkinter
import tkinter.messagebox
import tkinter.filedialog
import os
import chardet
# ———————— 开始写函数代码 ——————————
def ZuoZhe():
    tkinter.messagebox.showinfo("作者信息",message="zuihangubao")
def opens():
    global filename
    filename=tkinter.filedialog.askopenfilename(defaultextension=".txt") # 设置默认打开格式
    if filename=="":
        filename=None
    else:
        root.title("文件名:"+os.path.basename(filename))
        # 清空文本框内容
        txtPad.delete("1.0",tkinter.END)

        if(chardet.detect(open(filename,"rb").read())["encoding"]=="UTF-8-SIG"):
            txtPad.insert("1.0",open(filename,"rb").read().decode("UTF-8-SIG"))
        else:
            txtPad.insert("1.0", open(filename, "rb").read().decode("ansi"))
        # 养成好习惯,打开文件要记得关闭
        open(filename,"rb").close()

def XinJian(): # 新建
    global filename
    root.title("未命名")
    filename=None
    txtPad.delete("1.0",tkinter.END)

def Save(): # 保存
    global filename
    try:
        fw=open(filename,"w")
        msg=txtPad.get("1.0",tkinter.END)
        fw.write(msg)
        # 养成好习惯,打开文件用完一定要关闭。
        fw.close()
    except:
        SaveOther()

def SaveOther(): # 另存为
    global filename
    f=tkinter.filedialog.asksaveasfilename(initialfile="未命名.txt",defaultextension=".txt",filetypes=[(".TXT",".txt")])
    filename=f
    fw=open(f,"w",encoding='utf-8-sig')
    msg=txtPad.get("1.0",tkinter.END)
    fw.write(msg)
    fw.close()
    root.title("文件名:"+os.path.basename(filename))

def Cut(): # 剪切
    txtPad.event_generate("<<Cut>>")
    pass
def Copy(): # 复制
    txtPad.event_generate("<<Copy>>")
    pass
def Paste(): # 粘贴
    txtPad.event_generate("<<Paste>>")
    pass
def Redo(): # 重做
    txtPad.event_generate("<<Redo>>")
    pass
def Undo(): # 撤销
    txtPad.event_generate("<<Undo>>")
    pass
def SelectAll(): # 全选
    txtPad.tag_add("sel","1.0",tkinter.END)
    pass
# ———————— 结束写函数代码 ——————————



root=tkinter.Tk()
# ——————————————
root.title("练习开发简单记事本") # 设置窗体标题
root.geometry("500x400") # 设置窗体大小
# ——————————————
# 定义主菜单
ZhuCaiDan_root=tkinter.Menu(root)
# 设置主菜单
root.config(menu=ZhuCaiDan_root)
# ↓
# 开始创建二级菜单主框架 - 文件
File_ErJiCaiDan_root=tkinter.Menu(ZhuCaiDan_root,tearoff=False)
# 分别添加每1个二级菜单,accelerator方法为快捷键的意思!
File_ErJiCaiDan_root.add_command(label="新建",accelerator="ctrl+n",command=XinJian)
File_ErJiCaiDan_root.add_command(label="打开",accelerator="ctrl+o",command=opens)
File_ErJiCaiDan_root.add_command(label="保存",accelerator="ctrl+s",command=Save)
File_ErJiCaiDan_root.add_command(label="另存为",accelerator="ctrl+shift+s",command=SaveOther)
# 最后创建主菜单的名称,并且关联上面的二级菜单
ZhuCaiDan_root.add_cascade(label="文件",menu=File_ErJiCaiDan_root)
# ——————————————
# 开始创建二级菜单主框架 - 编辑
Edit_ErJiCaiDan_root=tkinter.Menu(ZhuCaiDan_root,tearoff=False)
# 分别添加每1个二级菜单,accelerator方法为快捷键的意思!
Edit_ErJiCaiDan_root.add_command(label="撤销",accelerator="ctrl+z",command=Undo)
Edit_ErJiCaiDan_root.add_command(label="重做",accelerator="ctrl+y",command=Redo)
Edit_ErJiCaiDan_root.add_separator() # 二级菜单分割线
Edit_ErJiCaiDan_root.add_command(label="剪切",accelerator="ctrl+s",command=Cut)
Edit_ErJiCaiDan_root.add_command(label="复制",accelerator="ctrl+c",command=Copy)
Edit_ErJiCaiDan_root.add_command(label="粘贴",accelerator="ctrl+v",command=Paste)
Edit_ErJiCaiDan_root.add_separator() # 二级菜单分割线
Edit_ErJiCaiDan_root.add_command(label="全选",accelerator="ctrl+x")
# 最后创建主菜单的名称,并且关联上面的二级菜单
ZhuCaiDan_root.add_cascade(label="编辑",menu=Edit_ErJiCaiDan_root)
# ——————————————
# ——————————————
# 开始创建二级菜单主框架 - 编辑
About_ErJiCaiDan_root=tkinter.Menu(ZhuCaiDan_root,tearoff=False)
# 分别添加每1个二级菜单,accelerator方法为快捷键的意思!
About_ErJiCaiDan_root.add_command(label="作者",command=ZuoZhe)
# 最后创建主菜单的名称,并且关联上面的二级菜单
ZhuCaiDan_root.add_cascade(label="关于",menu=About_ErJiCaiDan_root)
# ——————————————
# 增加导航图标按钮
ToolsBar=tkinter.Frame(root,height=25,bg="lightgreen")

ShortButton_1=tkinter.Button(ToolsBar,text="打开",command=opens)
ShortButton_1.pack(side=tkinter.LEFT,padx=5,pady=5)

ShortButton_2=tkinter.Button(ToolsBar,text="保存",command=Save)
ShortButton_2.pack(side=tkinter.LEFT)

# 把这个frame框架填充,横向填充。但
ToolsBar.pack(expand=tkinter.NO,fill=tkinter.X)
# ——————————————
# 创建1个多行文本框/富文本框,undo=True的作用是让text多行文本框支持撤销
txtPad=tkinter.Text(root,font=("微软雅黑",20),undo=True)
txtPad.pack(fill=tkinter.BOTH,expand=tkinter.YES)
# 给上面的多行文本框增加滚动条,并且定义这个滚动条归属于上面的txtPad多行文本框组件
scroll_1=tkinter.Scrollbar(txtPad)
# 将滚动条和txtPad多行文本框进行关联,纵向滚动条
txtPad.config(yscrollcommand=scroll_1.set)
# 声明滚动条是纵向显示
scroll_1.config(command=txtPad.yview)
# 最后布局这个滚动条,靠右,并纵向填充
scroll_1.pack(side=tkinter.RIGHT,fill=tkinter.Y)
# ——————————————
root.mainloop()

菜鸟IT博客[2022.03.15-14:36] 访问:410
[关闭窗口]  
Google公司(谷歌联盟)提供的广告↓
本页的htm伪静态链接网址:分享链接加载中....

收藏链接: www.ems-help.com | www.17post.com | www.17track.wang | www.kd100.wang | www.17wx.net | www.11185cha.com | www.sftrack.net | www.kdjiage.com | m.kdjiage.com | www.expba.net | m.expba.net | www.pptrack.net
学习Python的关键点
【1】★ Python:解决小数点后面四舍五入的精度丢失问题(二进制转换导致,另解决prec动态保留小数点后多少位)
【2】 ★ Python:单个py文件打包exe程序
【3】 ★ 给自己写的exe程序加上注册授权保护
【4】 ★ Python的http请求超时设置(timeout)| 异常类型/捕获异常
【5】 ★ Python的多线程的线程池的使用| ThreadPoolExecutor
【6】 ★ Python能用到的免费代理IP网址
【7】 ★ Python_用于测试代理IP是否有效
【8】 ★ Python Requests post() 方法 | post方式提交api
【9】 ★★★ Python Tkinter Gui视频学习教程
【10】 ★★★ Python 小项目实战-视频学习教程
【11】 ★★★ Python 爬虫项目实战-视频教程
【12】 ★★★ 高级进阶的关于python的五本书: 「Python从菜鸟到高手」、「html5+css3+JavaScript从入门到精通」、「Django Web应用开发实战」、「漫画算法」
【13】 ★★★ Request库-爬虫
【14】 ★★★ Python 图形识别文字
【15】 ★★★ Python 滑动验证码识别【图文教程】
【16】 ★★★ Python 滑动验证码识别【视频教程】
【18】 ★★★ Python 关于Class类的应用【视频教程】
【19.1】 ★★★ Python 关于进度条的制作(1)
【19.2】 ★★★ Python 关于进度条的制作(2)
【20】★★★ Python 抓取某宝的商品信息
【21】★★★ Python 一小时学会全栈开发浏览器版本的企业管理系统【视频教程】
【22】★★★ Python 全栈开发——前端+后端【视频教程】
【23】★★★ Layui 浏览器前端模块化UI框架
【24】★★★ Python-Django-Web应用开发【视频教程】
【25】★★★ Python 从0开始学【视频教程】
【26】★★★ Python的tkinter界面打包exe以后关于icon图标报错的解决办法!
【27】★★★ Python的tkinter视频学习教程【N个系统性学习合集视频】★★★
【28】★★★ Python全栈开发【视频教程】★★★
Copyright © 17WX.NET 版权所有 Manage 沪ICP备13006304号-5 沪公网安备31011702006630号
,sitemap.html,sitemap.xml
网站人气值: