File Encryption GUI

Continue from my last post, I will build a GUI front end for the file encryption utility in wxPython.

The GUI is very simple, just a text editing area and four buttons: Open, Save, Find, Exit.

The source code for the GUI is listed below.  We use a vertical BoxSizer to separate the text area and the button area, and a horizontal BoxSizer for the four buttons.  We align the buttons to the right, and create dummy button click event handlers to be implemented in the next post.  Lastly, center the window on screen and set default to the Open button.

import wx

class MainFrame(wx.Frame):
    def __init__(self, parent=None, id=(-1), title='kasio', size=(800,600)):
        wx.Frame.__init__(self, parent, id, title, size=size)
        self.panel = wx.Panel(self, wx.ID_ANY)

        textbox = wx.TextCtrl(self.panel, -1, style=wx.TE_MULTILINE)
        font = wx.Font(10, wx.FONTFAMILY_MODERN, wx.NORMAL, wx.NORMAL)
        btnOpen = wx.Button(self.panel, -1, 'Open')
        btnSave = wx.Button(self.panel, -1, 'Save')
        btnFind = wx.Button(self.panel, -1, 'Find')
        btnExit = wx.Button(self.panel, -1, 'Exit')

        self.Bind(wx.EVT_BUTTON, self.onOpen, btnOpen)
        self.Bind(wx.EVT_BUTTON, self.onSave, btnSave)
        self.Bind(wx.EVT_BUTTON, self.onFind, btnFind)
        self.Bind(wx.EVT_BUTTON, self.onExit, btnExit)

        topSizer = wx.BoxSizer(wx.VERTICAL)
        btnSizer = wx.BoxSizer(wx.HORIZONTAL)

        btnSizer.Add(btnOpen, 0, wx.ALL, 1)
        btnSizer.Add(btnSave, 0, wx.ALL, 1)
        btnSizer.Add(btnFind, 0, wx.ALL, 1)
        btnSizer.Add(btnExit, 0, wx.ALL, 1)

        topSizer.Add(textbox, 1, wx.ALL|wx.EXPAND, 1)
        topSizer.Add(wx.StaticLine(self.panel), 0, wx.ALL|wx.EXPAND, 3)
        topSizer.Add(btnSizer, 0, wx.ALL|wx.ALIGN_RIGHT, 3)
        self.Centre() # center the frame in desktop

        self.filename = ''
        self.password = ''
        self.textbox = textbox

    def onOpen(self, event):

    def onSave(self, event):

    def onFind(self, event):

    def onExit(self, event):

class MainApp(wx.App):
    def OnInit(self):
        frame = MainFrame()
        return True

def main():
    app = MainApp()

if __name__=='__main__':

We will hook up the filecrypto module to the GUI and implement some of the buttons logic in the next post.

No comments: