欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python開發(fā)實(shí)現(xiàn)簡(jiǎn)單的記事本

 更新時(shí)間:2016年11月15日 10:12:40   作者:楊可愛  
最近想對(duì)python加深學(xué)習(xí)一下,同時(shí)也是想試著做一些東西,所以使用python,結(jié)合Tkinter來(lái)做一個(gè)簡(jiǎn)單的跨平臺(tái)記事本。最終實(shí)現(xiàn)的記事本如下,也算是麻雀雖小,五臟俱全了,之后也是會(huì)繼續(xù)完善的。文中通過(guò)圖文及示例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒。

前言

本文的操作環(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)文章

  • Python 查看文件的讀寫權(quán)限方法

    Python 查看文件的讀寫權(quán)限方法

    下面小編就為大家分享一篇Python 查看文件的讀寫權(quán)限方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 常見的python正則用法實(shí)例講解

    常見的python正則用法實(shí)例講解

    這篇文章為大家詳細(xì)主要介紹了常見的python正則用法實(shí)例,列舉Python正則表達(dá)式的幾種匹配用法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Django項(xiàng)目使用ckeditor詳解(不使用admin)

    Django項(xiàng)目使用ckeditor詳解(不使用admin)

    今天小編就為大家分享一篇Django項(xiàng)目使用ckeditor詳解(不使用admin),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python編寫百度貼吧的簡(jiǎn)單爬蟲

    Python編寫百度貼吧的簡(jiǎn)單爬蟲

    這篇文章主要介紹了Python編寫百度貼吧的簡(jiǎn)單爬蟲,簡(jiǎn)單實(shí)現(xiàn)了下載對(duì)應(yīng)頁(yè)碼的頁(yè)面并存為以當(dāng)前時(shí)間命名的html文件,這里分享給大家,拋磚引玉。
    2015-04-04
  • python 三種方法提取pdf中的圖片

    python 三種方法提取pdf中的圖片

    這篇文章主要介紹了python 三種方法提取pdf中的圖片,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享

    Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享

    這篇文章主要介紹了Linux下使用python自動(dòng)修改本機(jī)網(wǎng)關(guān)代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • Win10下安裝CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0

    Win10下安裝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-03
  • Python pygame 動(dòng)畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理

    Python pygame 動(dòng)畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理

    這篇文章主要為大家介紹了Python pygame 動(dòng)畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 淺析Python實(shí)現(xiàn)DFA算法

    淺析Python實(shí)現(xiàn)DFA算法

    DFA全稱為Deterministic Finite Automaton,即確定有窮自動(dòng)機(jī)。特征:有一個(gè)有限狀態(tài)集合和一些從一個(gè)狀態(tài)通向另一個(gè)狀態(tài)的邊,每條邊標(biāo)記有一個(gè)符號(hào),其中一個(gè)狀態(tài)是初態(tài),某些狀態(tài)是終態(tài)。不同于不確定的有限自動(dòng)機(jī),DFA中不會(huì)有從同一狀態(tài)出發(fā)的兩條邊標(biāo)志有相同的符號(hào)
    2021-06-06
  • Python實(shí)現(xiàn)識(shí)別手寫數(shù)字大綱

    Python實(shí)現(xiàn)識(shí)別手寫數(shù)字大綱

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)識(shí)別手寫數(shù)字的大綱,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論