记事本源代码 python3
已实现基本功能,显示行号功能暂时实现不了(后面学会了再加,右下角可以实现定位光标所在行.列) 可能会有些bug 1 from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *
from threading import Timer
import string #定义一个添加菜单的类,想加什么菜单直接调用即可,副作用是没法加分隔线
class menuNameAccCom:
def __init__(self,menuname,menucom,menuacc):
self.menuname=menuname
self.menuacc=menuacc
self.menucom=menucom def addmenu(self,wigetName):
for (name,com,acc) in (zip(self.menuname,self.menucom,self.menuacc)):
wigetName.add_command(label=name,accelerator=acc,command=com) filename=''
def openfile():
global filename
filename = askopenfilename(defaultextension='.txt')
if filename == '':
filename = None
else:
root.title('FileName:'+os.path.basename(filename))
textPad.delete(1.0,END)#delete all
f = open(filename,'r')
textPad.insert(1.0,f.read())
f.close() def newfile():
global FileName
root.title('new file')
filename = None
textPad.delete(1.0,END) def savefile():
global filename
try:
f = open(filename,'w')
msg = textPad.get(1.0,END)
f.write(msg)
f.close()
except:
saveas() def saveas():
global filename
f = asksaveasfilename(initialfile = 'newfile',defaultextension ='.txt')
filename = f
fh = open(f,'w')
msg = textPad.get(1.0,END)
fh.write(msg)
fh.close()
root.title('FileName:'+os.path.basename(f)) def cut():
textPad.event_generate('<<Cut>>') def copy():
textPad.event_generate('<<Copy>>') def paste():
textPad.event_generate('<<Paste>>') def redo():
textPad.event_generate('<<Redo>>') def undo():
textPad.event_generate('<<Undo>>') def selectall():
textPad.tag_add('sel',1.0,END) def search():
topsearch=Toplevel(root)
topsearch.geometry('300x30+200+250')
labell=Label(topsearch,text='find')
labell.grid(row=0,column=0,padx=5)
entry1=Entry(topsearch,width=28)
entry1.grid(row=0,column=1,padx=5)
button1=Button(topsearch,text='find')
button1.grid(row=0,column=2) def addButton(name,command):
for (toolname ,toolcom) in zip(name,command):
shortButton = Button(toolbar,text=toolname,relief='groove',command=toolcom)
shortButton.pack(side=LEFT,padx=2,pady=5) root = Tk()
root.title('Andy Note')
root.geometry('800x500+100+100') menubar = Menu(root)
root.config(menu= menubar) #文件菜单
filemenu = Menu(menubar,tearoff=False)
filemenuName = ('New','Open','Save','Save as')
filemenuAcc = ('Ctrl+N','Ctrl+O','Ctrl+S','Ctrl+Shift+S')
filemenuCom = (newfile,openfile,savefile,saveas) filem = menuNameAccCom(filemenuName,filemenuCom,filemenuAcc)#调用添加菜单的类
filem.addmenu(filemenu)
menubar.add_cascade(label='File',menu=filemenu) #编辑菜单
editmenu = Menu(menubar,tearoff=False)
editmenuName = ('Undo','Redo','Cut','Copy','Paste','Select All')
editmenuAcc = ('Ctrl+Z','Ctrl+Y','Ctrl+X','Ctrl+C','Ctrl+V','Ctrl+A')
editmenuCom = (undo,redo,cut,copy,paste,selectall) editm = menuNameAccCom(editmenuName,editmenuCom,editmenuAcc)#调用添加菜单的类
editm.addmenu(editmenu)
menubar.add_cascade(label='Edit',menu=editmenu) findmenu = Menu(menubar,tearoff=False)
findmenu.add_command(label='Find',accelerator='Ctrl+F',command=search)
menubar.add_cascade(label='Find',menu=findmenu) #按钮
toolbar = Frame(root,height=20)
toolbarName = ('New','Open','Save','SaveAs','Undo','Redo','Cut','Copy','Paste','SelectAll')
toolbarCommand = (newfile,openfile,savefile,saveas,undo,redo,cut,copy,paste,selectall) addButton(toolbarName,toolbarCommand) #调用添加按钮的函数
toolbar.pack(fill=X) text = Text(root,width=4,wrap=CHAR,height=1)
text.pack(side=LEFT,fill=Y) textPad = Text(root,undo=True)
textPad.pack(expand=YES,fill=BOTH)
textPad.focus_set() scroll = Scrollbar(textPad)
textPad.config(yscrollcommand=scroll.set)
scroll.config(command=textPad.yview)
scroll.pack(side=RIGHT,fill=Y) timer_interval = 1
def getline():
global t,row
row,col = textPad.index(INSERT).split('.')
lineNum = 'Ln: ' +row+' '+'Co: '+col
var.set(lineNum) t = Timer(timer_interval,getline)
t.start()
t = Timer(timer_interval,getline)
t.start() var = StringVar()
status = Label(root,anchor=E,height=1,text='Ln',relief=FLAT,takefocus=False,textvariable=var,padx=2)
status.pack(fill=X) mainloop()
记事本源代码 python3的更多相关文章
- Qt: 记事本源代码
界面编程之实例学习,系统记事本是个极好的参考,初学Delphi及后之c#,皆以记事本为参考,今以Qt学习,亦是如此. 期间搭建开发环境,复习c++知识,寻找模块对应功能,不一而足:现刻录其模块代码,以 ...
- Java Swing 记事本代码
记事本代码分为4个部分: 1.顶部点击可展开的菜单如何生成?2.当点击了顶部菜单的某一个子菜单,在程序中如何判断点击了哪个子菜单?[正在写]3.那个供你输入文字并且可以滚动的文本框如何生成?4.点击了 ...
- 【资料目录收藏】.NET开发必看资料53个 经典源码77个
简单描述:为大家整理了下载中心.net资料,都是比较热的,好评率比较高的,做了一个可收藏的下载目录,希望大家喜欢~ 基于.net构架的留言板项目大全源码 http://down.51cto.com/z ...
- .net 资源
基于.net构架的留言板项目大全源码 http://down.51cto.com/zt/70 ASP.net和C#.net通用权限系统组件功能教程 http://down.51cto.com/zt/1 ...
- .NET开发必看资料53个+经典源码77个
目录0豆下载:http://down.51cto.com/data/426019 附件预览: 基于.net构架的留言板项目大全源码 http://down.51cto.com/zt/70 ASP.ne ...
- python运行出现TypeError: super() takes at least 1 argument (0 given)错误
在写继承子类的时候出现了TypeError: super() takes at least 1 argument (0 given)的error: 源代码(python3中完美可运行): class ...
- 源代码编译安装Python3.5.2
由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...
- 从零开始学习PYTHON3讲义(十三)记事本的升级版:网络记事本
<从零开始PYTHON3>第十三讲 网络编程的火热和重要性这里就不多说了,我们直接来看看Python在互联网编程方面的表现. Python有很多网络编程的第三方扩展包,这里推荐一个我认为最 ...
- python3+openCV实现图片的人脸人眼检测,原理+参数+源代码
上学时候用matlab学过一些图像处理的基础知识,当时课程作业是用haar实现人脸检测 but当时是心思根本不在图像处理上,so找了个同学帮忙做的,自己没上心 然鹅天道好轮回,现在捡起来了原来的算法一 ...
随机推荐
- linux ubuntu系统下,adb不是内部命令 (如何才能让adb命令可以使用)
linux ubuntu系统下,adb不是内部命令 原文地址 linux ubuntu系统下,adb不是内部命令 解决方法: 1.sudo gedit ~/.bashrc 2.将下面的两句加到上面打开 ...
- ASP.NET MVC 中实现View与Controller分离
一.开篇题外话 我经常会在博客园逛来逛去,看过很多大牛们的Blog,我很少在这块技术天地活动,之前有发表过几篇日志,好像大部分是和电商有关,作为一个多年的开发人员,很少在这里分享,之前一直在CSDN上 ...
- VBA 按照文件类型名称打开一个文件
Application.GetOpenFilename(fileFilter, fileIndex, fileSelectTitle, button, False) fileFilter: 指定能够被 ...
- jQuery Wookmark 瀑布流布局
瀑布流布局非常适合大量图片的展示,一改过去裁剪图片尺寸统一的排版,每张图片都能完全展示,并错落有致,让人眼前一亮. 版本: jQuery v1.4.3+ jQuery Wookmark Load v1 ...
- 剑指offer系列47---翻转单词顺序
[题目]输入“I am a student.”>>>“.tneduts a ma I”.>>输出:student. a am I package com.exe9.off ...
- 重绘TabControl
本文转载自:http://blog.csdn.net/conmajia/article/details/7596718 作者:野比 (conmajia@gmail.com) 时间:May, 2012 ...
- android学习笔记11——ScrollView
ScrollView——滚动条 用于内容显示不全,可提供滚动条下来形式,显示其余内容. ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 特点如下: 1.只能有 ...
- hist和bar画图关系
1.hist是绘制直方图,直方图显示了数据值的分布情况. 1>n = hist(Y,n) 将向量Y中的元素分到n个等间隔的范围内(默认为10个间隔),并返回每个范围内元素的个数作为一 ...
- [linux basic]基础--信号
线程->信号信号,是unix和linux系统响应某些条件而产生的一个事件.接收到该信号的进程会相应地采取一些行动.raise生成表示一个信号的产生catch捕获表示接受到一个信号的产生:信号是由 ...
- 【MySQL】unique列插入重复值解决方案
当在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT.中断操作或者更新旧 ...