专栏首页python3python入门之一个简单记事本

python入门之一个简单记事本

最近在练习一个关于python项目的列表,拿到列表看到这是要实现一个记事本功能,刚开始拿到题目真有点懵。虽然用python实现excel的处理已经很熟悉了,且已经把python的知识点都学了一遍,但是用起来还是不顺手呐。尤其是试验之后发现一定要用类实现起来才简单一些,对于这1点 ---类,,要知道本人已经接触c语言多年,但对于面向对象还是一窍不通。好吧,再去翻python关于类的知识,终于给整出来一点门道了。还是代码中解释吧。 注意:这是基于Python3。

#Python支持多种图形界面的库,为了不再麻烦去下载新的库,这里直接使用了python自带的tkinter库,记住本代码主要为了练习实现一个简单的GUI界面,顺便熟悉一下tkinter的使用
from tkinter import *  
import os
from tkinter import filedialog

def die():
    root.destroy()
     
class Create: 
    # init函数定义类的一些属性
    def __init__(self,root):
        self.root=(root) 
        #菜单控件;显示菜单栏,下拉菜单和弹出菜单,明显这里是要创建基于root的顶层菜单,记住名字self.menubar
        self.menubar=Menu(root)   
        #Text是tkinter中的文本控件,用于显示多行文本
        self.textpad = Text(root)
        self.textpad.pack(expand=YES,fill=BOTH)#expand 允许拉伸,fill允许(xy两个方向)填充
    
       #这里,是要创建基于顶层菜单的下拉菜单,记住它的名字self.filemenu
        self.filemenu=Menu(self.menubar,tearoff=0)  
        #好吧,开始添加命令吧,记得要把实现方法添加到command属性中,顺便提一下menu的属性:label,command,accelerator,underline
        self.filemenu.add_command(label="新建",accelerator="Ctrl+N")  
        self.filemenu.add_command(label="打开",command=self.openfile)  
        self.filemenu.add_separator()  
        self.filemenu.add_command(label="保存",command=self.save)
        self.filemenu.add_command(label="另存为",command=self.donothing)  
        self.filemenu.add_separator()  
        self.filemenu.add_command(label="页面设置",accelerator="U",command=self.donothing)  
        self.filemenu.add_command(label="打印",accelerator="Ctrl+P",command=self.donothing)  
        self.filemenu.add_separator()  
        self.filemenu.add_command(label="退出",accelerator="X",command=die)
        #好了,创建完毕就级联到顶层菜单上吧,顺便给它们起一个名字“文件”  
        self.menubar.add_cascade(label="文件",menu=self.filemenu)  
        
        self.editmenu = Menu(self.menubar, tearoff=0)  
        self.editmenu.add_command(label="Undo", command=self.donothing)  
        self.editmenu.add_command(label="Cut", command=self.donothing)  
        self.editmenu.add_command(label="Copy", command=self.donothing)  
        self.menubar.add_cascade(label="edit",menu=self.editmenu)

        self.helpmenu = Menu(self.menubar, tearoff=0)  
        self.helpmenu.add_command(label="Help Index", command=self.donothing)  
        self.helpmenu.add_command(label="About...", command=self.donothing)  
        self.menubar.add_cascade(label="Help", menu=self.helpmenu)  
        
        self.root.config(menu=self.menubar)  
          
    def donothing(self):  
        filewin=Toplevel(self.root)  
        button=Button(filewin,text="hi,添加你的代码")  
        button.pack() 

    def openfile(self):
        #这里,也是在网上搜了一下发现有如此好用的函数,看来要用python实现一个东西时,一定要先去了解一下有没有好用的库
        filename = filedialog.askopenfilename(title = "打开",filetypes = [("文件","*.txt")])
        if filename == '':
            filename = None
        else:
            root.title('FileName:'+os.path.basename(filename))
            self.textpad.delete(1.0,END)
            f = open(filename,'r+')
            self.textpad.insert(1.0,f.read())
            f.close()
    
    def save(self):
        sname = filedialog.asksaveasfilename(title = "保存",filetypes = [("保存文件","*.txt")])
        f = open(sname,'w+')
        msg = self.textpad.get(1.0,END)
        f.write(msg)
        f.close()

if __name__ == "__main__":  

    root = Tk() #定义一个主窗口
    root.title('记事本') #看到title了吗?添加一个属性,名字叫记事本
    root.geometry("800x500") #几何布局,初始化主窗口的大小
    window = Create(root) #从这里开始正式调用Create实现一个记事本
    root.mainloop()

好吧,就这样,抽空再完善

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分享两个小程序

      小编也不知道大家能不能用的到,我只是把我学到的知识分享出来,有需要的可以看一下。python本身就是一个不断更新改进的语言,不存在抄袭,有需要就可以拿过来用...

    用户2398817
  • Django(三):HttpReques

      当一个请求连接进来时,django会创建一个HttpRequest对象来封装和保存所有请求相关的信息,并且会根据请求路由载入匹配的视图函数。每个请求的视图函...

    用户2398817
  • 数据结构(二):栈

    用户2398817
  • 分享两个小程序

      小编也不知道大家能不能用的到,我只是把我学到的知识分享出来,有需要的可以看一下。python本身就是一个不断更新改进的语言,不存在抄袭,有需要就可以拿过来用...

    用户2398817
  • Django(三):HttpReques

      当一个请求连接进来时,django会创建一个HttpRequest对象来封装和保存所有请求相关的信息,并且会根据请求路由载入匹配的视图函数。每个请求的视图函...

    用户2398817
  • 再议Python协程——从yield到asyncio

    协程,英文名Coroutine。 前面介绍Python的多线程,以及用多线程实现并发(参见这篇文章【浅析Python多线程】),今天介绍的协程也是常用的并发手段...

    用户1432189
  • python class 一点总结

    Python class 总结 细数class中的 __**__ __init__(self, *values) 对象的初始化函数,初始化类的实例时,会调用...

    ke1th
  • 多线程如何获取结果

    "Do what you feel in your heart to be right. You’ll be criticized anyway.—— Elea...

    小闫同学啊
  • DIY 雪花特效(一)

    首先我们需要雪花的图片,比如下面这张(其实这张有点不太真实,不过无妨,我只是拿它来做演示)。

    用户6021899
  • 理解unittest测试框架(四)——执行模块

    前文讨论了很多关于用例组织相关的内容,这里看看unittest的执行模块。执行模块的内容不多,这里我们带着生成测试报告的HTMLTestRunner.py的逻辑...

    点点寒彬

扫码关注云+社区

领取腾讯云代金券