用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()

 

posted on 2016-12-28 09:30  加油AlwaysWin  阅读(7276)  评论(2编辑  收藏  举报