您的位置:首页 > 编程语言 > Python开发

wxPython实现的记事本

2012-06-27 17:54 225 查看
网上看到的,记事本功能相对完整,有些小问题,已调试通过

#! /usr/bin/python

#-*- coding: utf-8 -*-

'''

Created on 2012-6-27

'''

import wx

import os

class MyFrame(wx.Frame):

    def __init__(self):

        self.file=''

        self.content=[]

        self.count=0

        self.width=700

        self.height=500

        wx.Frame.__init__(self,None,-1,u'记事本',size=(self.width,self.height))

        

        self.panel=wx.Panel(self,-1)

        

        menubar=wx.MenuBar()

        menu1=wx.Menu()

        menubar.Append(menu1,u'文件')

        

        menu1.Append(1001,u'打开')

        menu1.Append(1002,u'保存')

        menu1.Append(1003,u'另存为')

        menu1.Append(1004,u'退出')

        

        menu2=wx.Menu()

        menubar.Append(menu2,u'编辑')

        menu2.Append(2001,u'撤销')

        menu2.Append(2002,u'清空')

        menu2.Append(2003,u'剪切')

        menu2.Append(2004,u'复制')

        menu2.Append(2005,u'粘贴')

        menu2.Append(2006,u'全选',)

        menu=wx.Menu()

        ctrla=menu.Append(-1, "\tCtrl-A")

        ctrlc=menu.Append(-1, "\tCtrl-C")

        ctrlx=menu.Append(-1, "\tCtrl-X")

        ctrlv=menu.Append(-1, "\tCtrl-V")

        ctrls=menu.Append(-1, "\tCtrl-S")

        

        menubar.Append(menu,u'快捷键')

        self.SetMenuBar(menubar)

        self.Bind(wx.EVT_MENU, self.OnSelect, ctrla)

        self.Bind(wx.EVT_MENU, self.OnCopy, ctrlc)

        self.Bind(wx.EVT_MENU, self.OnCut, ctrlx)

        self.Bind(wx.EVT_MENU, self.OnPaste, ctrlv)

        self.Bind(wx.EVT_MENU, self.OnTSave, ctrls)

 

        self.Bind(wx.EVT_MENU, self.OnOpen, id=1001)

        self.Bind(wx.EVT_MENU, self.OnSave, id=1002)

        self.Bind(wx.EVT_MENU, self.OnSaveAll, id=1003)

        self.Bind(wx.EVT_MENU, self.OnExit, id=1004)

        self.Bind(wx.EVT_MENU, self.OnBack, id=2001)

        self.Bind(wx.EVT_MENU, self.OnClear, id=2002)

        self.Bind(wx.EVT_MENU, self.OnCut, id=2003)

        self.Bind(wx.EVT_MENU, self.OnCopy, id=2004)

        self.Bind(wx.EVT_MENU, self.OnPaste, id=2005)

        self.Bind(wx.EVT_MENU, self.OnSelect, id=2006)

        self.Bind(wx.EVT_SIZE, self.OnResize)

 

        new=wx.Image('icon/new.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        open=wx.Image('icon/open.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        exit=wx.Image('icon/exit.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        save=wx.Image('icon/save.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        saveall=wx.Image('icon/saveall.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        back=wx.Image('icon/back.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        go=wx.Image('icon/go.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        clear=wx.Image('icon/clear.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        toolbar=self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_TEXT)

        toolbar.AddSimpleTool(100,new,'New')

        toolbar.AddSimpleTool(200,open,'Open')

        toolbar.AddSimpleTool(400,save,'Save')

        toolbar.AddSimpleTool(500,saveall,'Save All')

        toolbar.AddSimpleTool(600,back,'Back')

        toolbar.AddSimpleTool(700,go,'Go')

        toolbar.AddSimpleTool(800,clear,'Clear')

        toolbar.AddSimpleTool(300,exit,'Exit')

        toolbar.Realize()

        

        self.Bind(wx.EVT_TOOL,self.OnTNew,id=100)

        self.Bind(wx.EVT_TOOL,self.OnTOpen,id=200)

        self.Bind(wx.EVT_TOOL,self.OnTExit,id=300)

        self.Bind(wx.EVT_TOOL,self.OnTSave,id=400)

        self.Bind(wx.EVT_TOOL,self.OnTBack,id=600)

        self.Bind(wx.EVT_TOOL,self.OnTGo,id=700)

        self.Bind(wx.EVT_TOOL,self.OnTClear,id=800)

        self.text=wx.TextCtrl(self.panel,-1,pos=(2,2),size=(self.width-10,self.height-50), style=wx.HSCROLL|wx.TE_MULTILINE)

        self.Center() 

        

    def OnOpen(self,event):

        filterFile=" All files (*.*) |*.*"

        opendialog=wx.FileDialog(self,u"选择文件",os.getcwd(),"",filterFile,wx.OPEN)

        if opendialog.ShowModal()==wx.ID_OK:

            self.file=opendialog.GetPath()

            f=open(self.file)

            self.text.write(f.read())

            f.close()

        opendialog.Destroy()

    def OnTOpen(self,event):

        filterFile="All files (*.*) |*.*"

        opendialog=wx.FileDialog(self,u"选择文件",os.getcwd(),"",filterFile,wx.OPEN)

        if opendialog.ShowModal()==wx.ID_OK:

            self.file=opendialog.GetPath()

            f=open(self.file)

            self.text.write(f.read())

            f.close()

            self.content.append(self.text.GetValue())

        opendialog.Destroy()

    def OnSave(self,event):

        filterFile="All files (*.*) |*.*"

        opendialog=wx.FileDialog(self,u'保存文件',os.getcwd(),"",filterFile,wx.SAVE)

        if opendialog.ShowModal()==wx.ID_OK:

            self.file=opendialog.GetPath()

            self.text.SaveFile(self.file)

    def OnTSave(self,event):

        if self.file == '':

            filterFile="All files (*.*) |*.*"

            opendialog=wx.FileDialog(self,u'保存文件',os.getcwd(),"",filterFile,wx.SAVE)

            if opendialog.ShowModal()==wx.ID_OK:

                self.file=opendialog.GetPath()

                self.text.SaveFile(self.file)

                self.content.append(self.text.GetValue())

                self.count=self.count+1

        else:

            self.text.SaveFile(self.file)

            self.content.append(self.text.GetValue())

            self.count=self.count+1

    def OnSaveAll(self,event):

            pass

    def OnExit(self,event):

        self.Close()

    def OnTExit(self,event):

        self.Close()

    def OnBack(self,event):

        self.text.Undo()

    def OnTBack(self,event):

        try:

            self.count=self.count-1

            self.text.SetValue(self.content[self.count])

        except IndexError:

            self.count=0

    def OnTGo(self,event):

        try:

            self.count=self.count+1

            self.text.SetValue(self.content[self.count])

        except IndexError:

            self.count=len(self.content)-1

            

    def OnTNew(self,event):

        self.text.Clear()

        

    def OnClear(self,event):

        self.text.Clear()

    def OnTClear(self,event):

        self.text.Clear()

    def OnCut(self,event):

        self.text.Cut()

    def OnCopy(self,event):

        self.text.Copy()

    def OnPaste(self,event):

        self.text.Paste()

    def OnSelect(self,event):

        self.text.SelectAll()

    def OnResize(self,event):

        newsize=self.GetSize()

        width=newsize.GetWidth()-10

        height=newsize.GetHeight()-50

        self.text.SetSize((width,height))

        self.text.Refresh()

        

    

def main():

    app=wx.App()

    myFrame=MyFrame()

    myFrame.Show()

    app.MainLoop()  

    

if __name__ == '__main__':

    main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wxpython menu go import