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

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

 更新時(shí)間:2016年11月15日 10:12:40   作者:楊可愛(ài)  
最近想對(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:新建、打開(kāi)、撤銷(xiāo)和保存。

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

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

1.三個(gè)主模塊的建立

首先,我們先建立上圖中的三個(gè)主模塊,同時(shí),在模塊中建立各個(gè)模塊的功能。先以文件為例:下設(shè)功能:新建、打開(kāi)、保存和另存為,代碼如下:

#-*-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 = '打開(kāi)',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è)功能:撤銷(xiāo),重做,復(fù)制,剪切,粘貼,查找和全選;關(guān)于是下設(shè)作者和版權(quán)兩欄。相應(yīng)模塊對(duì)應(yīng)的代碼如下:

#編輯
editmenu = Menu(menubar)
editmenu.add_command(label = '撤銷(xiāo)',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 = '打開(kāi)',command = openfile)
shortButton.pack(side = LEFT,padx = 5,pady = 5)
shortButton = Button(toolbar,text = '保存',command = save)
shortButton.pack(side = RIGHT)
shortButton = Button(toolbar,text = '撤銷(xiāo)',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)單的開(kāi)始實(shí)現(xiàn)吧。

對(duì)應(yīng)的代碼如下:

from tkMessageBox import *

#關(guān)于
def author():
  showinfo('作者信息','本軟件由可愛(ài)的奔奔完成')
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)參見(jiàn)Tkinter官網(wǎng)中的fileDialogs,相應(yīng)的使用各個(gè)方法實(shí)現(xiàn)功能:新建、打開(kāi)、保存和另存為,建立相應(yīng)的函數(shù)實(shí)現(xiàn),代碼如下:

#新建
def new():
  root.title('未命名文件')
  filename = None
  textpad.delete(1.0,END)
#打開(kāi)
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)的功能:撤銷(xiāo),重做,復(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ì)此次開(kāi)發(fā)的簡(jiǎn)單記事本的一個(gè)總結(jié),之后有時(shí)間也是會(huì)添加更多的功能。希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果疑問(wèn)大家可以留言交流。

相關(guān)文章

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

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

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

    MySQL Prepared語(yǔ)句的具體使用

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

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

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

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

    Pandas是Python中廣泛使用的數(shù)據(jù)處理庫(kù),提供了豐富的功能來(lái)處理和分析數(shù)據(jù),本文主要介紹了Pandas排序和分組排名(sort和rank)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    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ù)器,其實(shí)完全可以結(jié)合frp進(jìn)行內(nèi)網(wǎng)穿透,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 使用Python實(shí)現(xiàn)自動(dòng)編寫(xiě)word文檔

    使用Python實(shí)現(xiàn)自動(dòng)編寫(xiě)word文檔

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

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

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

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

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

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

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

最新評(píng)論

南溪县| 峨山| 隆子县| 大同市| 肥城市| 铅山县| 莆田市| 通州区| 广州市| 石景山区| 武隆县| 阳春市| 牙克石市| 教育| 武定县| 桂阳县| 彰化县| 莲花县| 商南县| 建昌县| 乐平市| 普安县| 武冈市| 秀山| 出国| 万山特区| 昭通市| 庆云县| 石首市| 三台县| 冕宁县| 政和县| 郸城县| 呼伦贝尔市| 双峰县| 永城市| 青田县| 永平县| 龙里县| 锡林浩特市| 克拉玛依市|