利用Python開發(fā)實(shí)現(xiàn)簡(jiǎn)單的記事本
前言
本文的操作環(huán)境:ubuntu,Python2.7,采用的是Pycharm進(jìn)行代碼編輯,個(gè)人很喜歡它的代碼自動(dòng)補(bǔ)齊功能。
示例圖
如上圖,我們可以看到這個(gè)記事本主要分為三個(gè)模塊:文件,編輯和關(guān)于,結(jié)合我自身的習(xí)慣外加四個(gè)toolbar:新建、打開、撤銷和保存。
下來(lái)就我個(gè)人構(gòu)建這個(gè)記事本做個(gè)總結(jié)。
一、整體框架構(gòu)建
1.三個(gè)主模塊的建立
首先,我們先建立上圖中的三個(gè)主模塊,同時(shí),在模塊中建立各個(gè)模塊的功能。先以文件為例:下設(shè)功能:新建、打開、保存和另存為,代碼如下:
#-*-encoding:utf8 from Tkinter import * root = Tk() root.title('Benben Node') #create menu menubar = Menu(root) root.config(menu = menubar) filemenu = Menu(menubar) filemenu.add_command(label = '新建',accelerator ='ctrl + N') filemenu.add_command(label = '打開',accelerator ='ctrl + O') filemenu.add_command(label = '保存',accelerator ='ctrl + S') filemenu.add_command(label = '另存為',accelerator ='ctrl + Shift + s') menubar.add_cascade(label = '文件',menu = filemenu) root.mainloop()
運(yùn)行結(jié)果:
我們可以看到一個(gè)簡(jiǎn)單的文件欄就建好了。對(duì)應(yīng)的建立編輯和關(guān)于模塊。編輯指的是對(duì)文本編輯中要使用的模塊,下設(shè)功能:撤銷,重做,復(fù)制,剪切,粘貼,查找和全選;關(guān)于是下設(shè)作者和版權(quán)兩欄。相應(yīng)模塊對(duì)應(yīng)的代碼如下:
#編輯 editmenu = Menu(menubar) editmenu.add_command(label = '撤銷',accelerator = 'ctrl + z') editmenu.add_command(label = '重做',accelerator = 'ctrl + y') editmenu.add_command(label = '復(fù)制',accelerator = 'ctrl + c') editmenu.add_command(label = '剪切',accelerator = 'ctrl + x') editmenu.add_command(label = '粘貼',accelerator = 'ctrl + v') editmenu.add_command(label = '查找',accelerator = 'ctrl + F') editmenu.add_command(label = '全選',accelerator = 'ctrl + A') menubar.add_cascade(label = '編輯',menu = editmenu) #關(guān)于 aboutmenu = Menu(menubar) aboutmenu.add_command(label = '作者') aboutmenu.add_command(label = '版權(quán)') menubar.add_cascade(label = '關(guān)于',menu = aboutmenu)
運(yùn)行結(jié)果:
截圖未能得到各個(gè)模塊對(duì)應(yīng)的功能。
2.toolbar
在記事本中添加toolbar,添加對(duì)應(yīng)的button并設(shè)定合適的間距,對(duì)應(yīng)的代碼如下:
#toolbar toolbar = Frame(root,height = 15,bg = 'SkyBlue') shortButton = Button(toolbar,text = '新建',command = open) shortButton.pack(side = LEFT) shortButton = Button(toolbar,text = '打開',command = openfile) shortButton.pack(side = LEFT,padx = 5,pady = 5) shortButton = Button(toolbar,text = '保存',command = save) shortButton.pack(side = RIGHT) shortButton = Button(toolbar,text = '撤銷',command = undo) shortButton.pack(side = RIGHT,padx = 5,pady = 5) toolbar.pack(expand = NO,fill = X)
3.創(chuàng)建狀態(tài)欄(statusbar)和正文編輯區(qū)域
首先在程序中添加:
root = Tk() root.title('Benben Node') root.geometry("800x500+100+100")
編輯狀態(tài)欄的代碼:
#statusbar status = Label(root,text = 'Ln20',bd = 1,relief = SUNKEN,anchor = 'w') status.pack(side = BOTTOM,fill = X)
當(dāng)然我們還可以建立相應(yīng)的編輯區(qū)域和滾動(dòng)條,對(duì)應(yīng)的代碼如下:
#正文編輯區(qū)域 lnlabel = Label(root,width = 2,bg = 'antique white') lnlabel.pack(side = LEFT,fill = Y) textpad = Text(root,undo = True) textpad.pack(expand = YES,fill = BOTH) scroll = Scrollbar(textpad) textpad.config(yscrollcommand = scroll.set) scroll.config(command = textpad.yview) scroll.pack(side = RIGHT,fill = Y)
執(zhí)行代碼,結(jié)果:
輸入相應(yīng)的可以看到右邊界對(duì)應(yīng)的滾動(dòng)條隨輸入滾動(dòng)。
二、關(guān)于模塊的實(shí)現(xiàn)
在這三個(gè)模塊中,關(guān)于是最好實(shí)現(xiàn)的一個(gè),那就從最簡(jiǎn)單的開始實(shí)現(xiàn)吧。
對(duì)應(yīng)的代碼如下:
from tkMessageBox import * #關(guān)于 def author(): showinfo('作者信息','本軟件由可愛的奔奔完成') def about(): showinfo('版權(quán)信息.copyright','版權(quán)屬于奔奔') aboutmenu = Menu(menubar) aboutmenu.add_command(label = '作者',command = author) aboutmenu.add_command(label = '版權(quán)',command = about) menubar.add_cascade(label = '關(guān)于',menu = aboutmenu)
運(yùn)行結(jié)果:
三、文件模塊的實(shí)現(xiàn)
這部分的實(shí)現(xiàn)參見Tkinter官網(wǎng)中的fileDialogs,相應(yīng)的使用各個(gè)方法實(shí)現(xiàn)功能:新建、打開、保存和另存為,建立相應(yīng)的函數(shù)實(shí)現(xiàn),代碼如下:
#新建 def new(): root.title('未命名文件') filename = None textpad.delete(1.0,END) #打開 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) f = open(filename,'r') textpad.insert(1.0,f.read()) f.close() #保存 def save(): global filename try: f = open(filename,'w') msg = textpad.get(1.0,END) f.write(msg) f.close() except: saveas() #另存為 def saveas(): f = asksaveasfilename(initialfile= '未命名.txt', defaultextension='.txt') global filename filename = f fh = open(f,'w') msg = textpad.get(1.0,END) fh.write(msg) fh.close() root.title('FileName:'+os.path.basename(f))
相應(yīng)的在filemenu和toolbar中加入對(duì)應(yīng)的command,運(yùn)行結(jié)果:
四、編輯模塊的實(shí)現(xiàn)
編輯要實(shí)現(xiàn)的功能:撤銷,重做,復(fù)制,剪切,粘貼,查找和全選,對(duì)應(yīng)的函數(shù)代碼如下:
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') label1 = Label(topsearch,text='Find') label1.grid(row=0, column=0,padx=5) entry1 = Entry(topsearch,width=20) entry1.grid(row=0, column=1,padx=5) button1 = Button(topsearch,text='查找') button1.grid(row=0, column=2)
同樣在editmenu和toolbar中加入對(duì)應(yīng)的command。運(yùn)行代碼,功能實(shí)現(xiàn)!快捷鍵親測(cè)可用~
總結(jié)
以上就是這篇文中的全部?jī)?nèi)容了,這算是對(duì)此次開發(fā)的簡(jiǎn)單記事本的一個(gè)總結(jié),之后有時(shí)間也是會(huì)添加更多的功能。希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果疑問(wèn)大家可以留言交流。
相關(guān)文章
Django項(xiàng)目使用ckeditor詳解(不使用admin)
今天小編就為大家分享一篇Django項(xiàng)目使用ckeditor詳解(不使用admin),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享
這篇文章主要介紹了Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05Win10下安裝CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+p
這篇文章主要介紹了Win10下安裝CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python pygame 動(dòng)畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理
這篇文章主要為大家介紹了Python pygame 動(dòng)畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Python實(shí)現(xiàn)識(shí)別手寫數(shù)字大綱
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)識(shí)別手寫數(shù)字的大綱,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01