zoukankan      html  css  js  c++  java
  • Python编写的记事本小程序

      用Python中的Tkinter模块写的一个简单的记事本程序,Python2.x和Python3.x的许多内置函数有所改变,所以以下分为Python2.x和Python3.x版本。

    一.效果展示:

     

    二.Python3.x版本的记事本程序

      1 #创建一个记事本
      2 #__author__='ZhangP'
      3 #-*- encoding:utf8 -*-
      4 
      5 from tkinter import *
      6 import tkinter.messagebox
      7 import tkinter.filedialog
      8 import os
      9 
     10 
     11 root=Tk()
     12 root.title('ZP Node')
     13 
     14 #初始大小显示以及定位位置,注意一定要使用x而非*
     15 root.geometry("800x500+100+100")
     16 
     17 filename=''
     18 
     19 #定义版权子菜单对应的相关函数
     20 def author():
     21     
     22     tkinter.messagebox.askokcancel('作者信息','本软件由加油AlwaysWin开发')
     23 
     24 
     25 def about():
     26     
     27     tkinter.messagebox.askokcancel('版权信息.Copyright','本软件没有版权,随便用')
     28 
     29 #定义文件子菜单对应的相关函数
     30 def openfile():
     31     global filename
     32     filename=tkinter.filedialog.askopenfilename(defaultextension = '.txt')
     33 
     34     if filename == '':
     35         filename=None
     36     else:
     37         root.title('FileName:'+os.path.basename(filename))
     38         textPad.delete(1.0,END)
     39         f=open(filename,'r',encoding='utf-8')   #注意后面要加上读取的编码格式,否则报编码错误
     40         textPad.insert(1.0,f.read())
     41         f.close()
     42 
     43 def new():
     44     global filename
     45     root.title("未命名文件")
     46     filename=None
     47     textPad.delete(1.0,END)
     48 
     49 def save():
     50     global filename
     51     try:
     52         f=open(filename,'w')
     53         msg=textPad.get(1.0,END)
     54         f.write(msg)
     55         f.close()
     56     except:
     57         saveas()
     58 
     59 def saveas():
     60     f=tkinter.filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
     61     global filename
     62     filename=f
     63     fh=open(f,'w')
     64     msg=textPad.get(1.0,END)
     65     fh.write(msg)
     66     fh.close()
     67     root.title('FileName:'+os.path.basename(f))
     68 
     69 #创建编辑子菜单的对应函数
     70 def cut():
     71     textPad.event_generate('<<Cut>>')
     72 
     73 def copy():
     74     textPad.event_generate('<<Copy>>')
     75 
     76 def paste():
     77     textPad.event_generate('<<Paste>>')
     78 
     79 def redo():
     80     textPad.event_generate('<<Redo>>')
     81 
     82 def undo():
     83     textPad.event_generate('<<Undo>>')
     84 
     85 def selectAll():
     86     textPad.tag_add('sel','1.0',END)
     87 
     88 def search():
     89     topsearch=Toplevel(root)
     90     topsearch.geometry('300x30+200+250')
     91     label1=Label(topsearch,text='Find')
     92     label1.grid(row=0,column=0,padx=5)
     93     entry1=Entry(topsearch,width=20)
     94     entry1.grid(row=0,column=1,padx=5)
     95     button1=Button(topsearch,text='查找')
     96     button1.grid(row=0,column=2)
     97 #创建主菜单
     98 
     99 menubar=Menu(root)
    100 root.config(menu=menubar)
    101 
    102 #创建文件子菜单
    103 filemenu=Menu(menubar)
    104 
    105 filemenu.add_command(label='新建',accelerator='Ctrl+N',command=new)
    106 filemenu.add_command(label='打开',accelerator='Ctrl+O',command=openfile)
    107 filemenu.add_command(label='保存',accelerator='Ctrl+S',command=save)
    108 filemenu.add_command(label='另存为',accelerator='Ctrl+Shift+S',command=saveas)
    109 menubar.add_cascade(label='文件',menu=filemenu)
    110 
    111 #创建编辑子菜单
    112 editmenu=Menu(menubar)
    113 editmenu.add_command(label='撤消',accelerator='Ctrl+z',command=undo)
    114 editmenu.add_command(label='重做',accelerator='Ctrl+y',command=redo)
    115 #添加分割线
    116 editmenu.add_separator()
    117 editmenu.add_command(label='剪切',accelerator='Ctrl+X',command=cut)
    118 editmenu.add_command(label='复制',accelerator='Ctrl+C',command=copy)
    119 editmenu.add_command(label='粘贴',accelerator='Ctrl+V',command=paste)
    120 editmenu.add_separator()
    121 editmenu.add_command(label='查找',accelerator='Ctrl+F',command=search)
    122 editmenu.add_command(label='全选',accelerator='Ctrl+A',command=selectAll)
    123 menubar.add_cascade(label='编辑',menu=editmenu)
    124 
    125 #添加版权子菜单
    126 aboutmenu=Menu(menubar)
    127 aboutmenu.add_command(label='作者',command=author)
    128 aboutmenu.add_command(label='版权',command=about)
    129 menubar.add_cascade(label='关于',menu=aboutmenu)
    130 
    131 
    132 #添加工具栏
    133 toolbar=Frame(root,height=25,bg='light sea green')
    134 shortButton=Button(toolbar,text='打开',command=openfile)
    135 shortButton.pack(side=LEFT,padx=5,pady=5)
    136 
    137 shortButton=Button(toolbar,text='保存',command=save)
    138 shortButton.pack(side=LEFT)
    139 toolbar.pack(expand=NO,fill=X)
    140 
    141 #添加状态栏
    142 status=Label(root,text="Ln20",bd=1,relief=SUNKEN,anchor=W)
    143 status.pack(side=BOTTOM,fill=X)
    144 
    145 #添加编辑界面以及滚动条
    146 lnlabel=Label(root,width=2,bg='antique white')
    147 lnlabel.pack(side=LEFT,fill=Y)
    148 
    149 textPad=Text(root,undo=True)
    150 textPad.pack(expand=YES,fill=BOTH)
    151 
    152 scroll=Scrollbar(textPad)
    153 textPad.config(yscrollcommand=scroll.set)
    154 scroll.config(command=textPad.yview)
    155 scroll.pack(side=RIGHT,fill=Y)
    156 
    157 #显示页面
    158 root.mainloop()

    三.Python2.x版本的记事本程序

      1 #创建一个记事本
      2 #__author__='ZhangP'
      3 #-*- encoding:utf8 -*-
      4 
      5 from Tkinter import *
      6 from tkMessageBox import *
      7 from tkFileDialog import *
      8 import os
      9 
     10 
     11 root=Tk()
     12 root.title('ZP Node')
     13 
     14 #初始大小显示以及定位位置,注意一定要使用x而非*
     15 root.geometry("800x500+100+100")
     16 filename=''
     17 
     18 #定义版权对应的相关函数
     19 def author():
     20     showinfo('作者信息','本软件由加油AlwaysWin开发')
     21 
     22 def about():
     23     showinfo('版权信息.Copyright','本软件没有版权,随便用')
     24 
     25 #定义文件子菜单对应的相关函数
     26 def openfile():
     27     global filename
     28     filename=askopenfilename(defaultextension = '.txt')
     29 
     30     if filename == '':
     31         filename=None
     32     else:
     33         root.title('FileName:'+os.path.basename(filename))
     34         textPad.delete(1.0,END)
     35         f=open(filename,'r')
     36         textPad.insert(1.0,f.read())
     37         f.close()
     38 
     39 def new():
     40     global filename
     41     root.title("未命名文件")
     42     filename = None
     43     textPad.delete(1.0, END)
     44 def save():
     45     global filename
     46     try:
     47         f=open(filename,'w')
     48         msg=textPad.get(1.0,END)
     49         f.write(msg)
     50         f.close()
     51     except:
     52         saveas()
     53 
     54 def saveas():
     55     f=asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
     56     global filename
     57     filename=f
     58     fh=open(f,'w')
     59     msg=textPad.get(1.0,END)
     60     fh.write(msg)
     61     fh.close()
     62     root.title('FileName:'+os.path.basename(f))
     63 
     64 #创建编辑子菜单的对应函数
     65 def cut():
     66     textPad.event_generate('<<Cut>>')
     67 
     68 def copy():
     69     textPad.event_generate('<<Copy>>')
     70 
     71 def paste():
     72     textPad.event_generate('<<Paste>>')
     73 
     74 def redo():
     75     textPad.event_generate('<<Redo>>')
     76 
     77 def undo():
     78     textPad.event_generate('<<Undo>>')
     79 
     80 def selectAll():
     81     textPad.tag_add('sel','1.0',END)
     82 
     83 def search():
     84     topsearch=Toplevel(root)
     85     topsearch.geometry('300x30+200+250')
     86     label1=Label(topsearch,text='Find')
     87     label1.grid(row=0,column=0,padx=5)
     88     entry1=Entry(topsearch,width=20)
     89     entry1.grid(row=0,column=1,padx=5)
     90     button1=Button(topsearch,text='查找')
     91     button1.grid(row=0,column=2)
     92 #创建主菜单
     93 
     94 menubar=Menu(root)
     95 root.config(menu=menubar)
     96 
     97 #创建文件子菜单
     98 filemenu=Menu(menubar)
     99 
    100 filemenu.add_command(label='新建',accelerator='Ctrl+N',command=new)
    101 filemenu.add_command(label='打开',accelerator='Ctrl+O',command=openfile)
    102 filemenu.add_command(label='保存',accelerator='Ctrl+S',command=save)
    103 filemenu.add_command(label='另存为',accelerator='Ctrl+Shift+S',command=saveas)
    104 menubar.add_cascade(label='文件',menu=filemenu)
    105 
    106 #创建编辑子菜单
    107 editmenu=Menu(menubar)
    108 editmenu.add_command(label='撤消',accelerator='Ctrl+z',command=undo)
    109 editmenu.add_command(label='重做',accelerator='Ctrl+y',command=redo)
    110 #添加分割线
    111 editmenu.add_separator()
    112 editmenu.add_command(label='剪切',accelerator='Ctrl+X',command=cut)
    113 editmenu.add_command(label='复制',accelerator='Ctrl+C',command=copy)
    114 editmenu.add_command(label='粘贴',accelerator='Ctrl+V',command=paste)
    115 editmenu.add_separator()
    116 editmenu.add_command(label='查找',accelerator='Ctrl+F',command=search)
    117 editmenu.add_command(label='全选',accelerator='Ctrl+A',command=selectAll)
    118 menubar.add_cascade(label='编辑',menu=editmenu)
    119 
    120 #添加版权子菜单
    121 aboutmenu=Menu(menubar)
    122 aboutmenu.add_command(label='作者',command=author)
    123 aboutmenu.add_command(label='版权',command=about)
    124 menubar.add_cascade(label='关于',menu=aboutmenu)
    125 
    126 
    127 #添加工具栏
    128 toolbar=Frame(root,height=25,bg='light sea green')
    129 shortButton=Button(toolbar,text='打开',command=openfile)
    130 shortButton.pack(side=LEFT,padx=5,pady=5)
    131 
    132 shortButton=Button(toolbar,text='保存',command=save)
    133 shortButton.pack(side=LEFT)
    134 toolbar.pack(expand=NO,fill=X)
    135 
    136 #添加状态栏
    137 status=Label(root,text="Ln20",bd=1,relief=SUNKEN,anchor=W)
    138 status.pack(side=BOTTOM,fill=X)
    139 
    140 #添加编辑界面以及滚动条
    141 lnlabel=Label(root,width=2,bg='antique white')
    142 lnlabel.pack(side=LEFT,fill=Y)
    143 
    144 textPad=Text(root,undo=True)
    145 textPad.pack(expand=YES,fill=BOTH)
    146 
    147 scroll=Scrollbar(textPad)
    148 textPad.config(yscrollcommand=scroll.set)
    149 scroll.config(command=textPad.yview)
    150 scroll.pack(side=RIGHT,fill=Y)
    151 
    152 #显示页面
    153 root.mainloop()
  • 相关阅读:
    通用Excel导入设计
    批量执行SQL文件
    ExtJS之对话框及窗口篇
    Windows Phone 7完整版模拟器
    C#迭代器
    XNA游戏开发之速度调整
    ExtJs之Panel篇
    Table锁定行列
    PB调用WebService示例(含源码)
    调用CodeSmith类库实现代码生成(含源码)
  • 原文地址:https://www.cnblogs.com/AlwaysWIN/p/6228242.html
Copyright © 2011-2022 走看看