最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

本文的操作環(huán)境:ubuntu,Python2.7,采用的是Pycharm進(jìn)行代碼編輯,個人很喜歡它的代碼自動補齊功能。

示例圖

如上圖,我們可以看到這個記事本主要分為三個模塊:文件,編輯和關(guān)于,結(jié)合我自身的習(xí)慣外加四個toolbar:新建、打開、撤銷和保存。

下來就我個人構(gòu)建這個記事本做個總結(jié)。

一、整體框架構(gòu)建

1.三個主模塊的建立

首先,我們先建立上圖中的三個主模塊,同時,在模塊中建立各個模塊的功能。先以文件為例:下設(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()

運行結(jié)果:

  我們可以看到一個簡單的文件欄就建好了。對應(yīng)的建立編輯和關(guān)于模塊。編輯指的是對文本編輯中要使用的模塊,下設(shè)功能:撤銷,重做,復(fù)制,剪切,粘貼,查找和全選;關(guān)于是下設(shè)作者和版權(quán)兩欄。相應(yīng)模塊對應(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)

運行結(jié)果:

截圖未能得到各個模塊對應(yīng)的功能。

2.toolbar

在記事本中添加toolbar,添加對應(yīng)的button并設(shè)定合適的間距,對應(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ū)域和滾動條,對應(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)的可以看到右邊界對應(yīng)的滾動條隨輸入滾動。

二、關(guān)于模塊的實現(xiàn)

在這三個模塊中,關(guān)于是最好實現(xiàn)的一個,那就從最簡單的開始實現(xiàn)吧。

對應(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)

運行結(jié)果:

     

三、文件模塊的實現(xiàn)

這部分的實現(xiàn)參見Tkinter官網(wǎng)中的fileDialogs,相應(yīng)的使用各個方法實現(xiàn)功能:新建、打開、保存和另存為,建立相應(yīng)的函數(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中加入對應(yīng)的command,運行結(jié)果:

  

四、編輯模塊的實現(xiàn)

編輯要實現(xiàn)的功能:撤銷,重做,復(fù)制,剪切,粘貼,查找和全選,對應(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中加入對應(yīng)的command。運行代碼,功能實現(xiàn)!快捷鍵親測可用~

總結(jié)

以上就是這篇文中的全部內(nèi)容了,這算是對此次開發(fā)的簡單記事本的一個總結(jié),之后有時間也是會添加更多的功能。希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果疑問大家可以留言交流。

相關(guān)文章

  • 基于Numpy.convolve使用Python實現(xiàn)滑動平均濾波的思路詳解

    基于Numpy.convolve使用Python實現(xiàn)滑動平均濾波的思路詳解

    這篇文章主要介紹了Python極簡實現(xiàn)滑動平均濾波(基于Numpy.convolve)的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • MySQL Prepared語句的具體使用

    MySQL Prepared語句的具體使用

    本文主要介紹了MySQL Prepared語句的具體使用,可以利用prepared語句來避免重復(fù)解析SQL的開銷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • Python面向?qū)ο缶幊讨畢^(qū)間的插入詳解

    Python面向?qū)ο缶幊讨畢^(qū)間的插入詳解

    這篇文章主要為大家詳細(xì)介紹了Python面向?qū)ο缶幊虒嵗坛讨械膮^(qū)間的插入,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Pandas排序和分組排名(sort和rank)的實現(xiàn)

    Pandas排序和分組排名(sort和rank)的實現(xiàn)

    Pandas是Python中廣泛使用的數(shù)據(jù)處理庫,提供了豐富的功能來處理和分析數(shù)據(jù),本文主要介紹了Pandas排序和分組排名(sort和rank)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • selenium3+python3環(huán)境搭建教程圖解

    selenium3+python3環(huán)境搭建教程圖解

    這篇文章主要介紹了selenium3+python3環(huán)境搭建教程圖解,需要的朋友可以參考下
    2018-12-12
  • pycharm使用sftp同步服務(wù)器的步驟

    pycharm使用sftp同步服務(wù)器的步驟

    這篇文章主要介紹了pycharm使用sftp同步服務(wù)器,其實完全可以結(jié)合frp進(jìn)行內(nèi)網(wǎng)穿透,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 使用Python實現(xiàn)自動編寫word文檔

    使用Python實現(xiàn)自動編寫word文檔

    這篇文章主要為大家詳細(xì)介紹了如何使用Python中的python-docx實現(xiàn)自動編寫word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2024-12-12
  • 一文詳解Python定時任務(wù)觸發(fā)

    一文詳解Python定時任務(wù)觸發(fā)

    這篇文章主要為大家詳細(xì)介紹了Python定時任務(wù)觸發(fā)的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2023-04-04
  • Python使用國內(nèi)鏡像加速pip安裝的方法講解

    Python使用國內(nèi)鏡像加速pip安裝的方法講解

    在Python開發(fā)中,pip是一個非常重要的工具,用于安裝和管理Python的第三方庫,然而,在國內(nèi)使用pip安裝依賴時,往往會因為網(wǎng)絡(luò)問題而導(dǎo)致速度緩慢甚至超時,為了解決這個問題,本文將詳細(xì)介紹如何使用-i參數(shù)配置國內(nèi)鏡像源,加速pip的安裝過程,需要的朋友可以參考下
    2025-02-02
  • 利用Python連接Oracle數(shù)據(jù)庫的基本操作指南

    利用Python連接Oracle數(shù)據(jù)庫的基本操作指南

    由于之前的在職的公司沒有機會接觸到Oralce數(shù)據(jù)庫,所以就沒有用python連接過Oralce,之前大多集中在連接mysql和sql server,最近在做一下web自動化的工作,所以簡單的記錄一下,下面這篇文章主要給大家介紹了關(guān)于利用Python連接Oracle數(shù)據(jù)庫的基本操作,需要的朋友可以參考下
    2022-06-06

最新評論

全州县| 通州市| 桦南县| 沾化县| 凯里市| 乐昌市| 邢台市| 福安市| 满城县| 武定县| 蒙城县| 揭西县| 家居| 汝南县| 青岛市| 永宁县| 平和县| 鄂温| 清远市| 伊宁市| 临夏市| 教育| 太白县| 岫岩| 喜德县| 育儿| 仙桃市| 寿宁县| 行唐县| 乌什县| 岳普湖县| 黑水县| 齐河县| 丽水市| 玉龙| 武定县| 安平县| 象山县| 哈密市| 循化| 千阳县|