Events handling

Now, you have some widgets on the window. However, there are no actions associated with them. If you try to click on Open button, nothing happens. To enable the widgets to perform tasks you need to use Bind() method that binds a widget to a method. The Open button would read data from a file input in filename box and display its content in the contents widget. The Save button would save changes made to the content of the file.

import wx
import re
 
def openfile(event):
    matchtextfile(filename.GetValue())
    try:
        f=open(filename.GetValue(),'r')
        contents.SetValue(f.read())
    except Exception:print 'Not a valid file name'
    finally:
        f.close()
 
def matchtextfile(filename):
    pat='.txt'
    if re.search(pat,filename):
        return
    else:
        openButton.Enable(False)
 
def savefile(event):
    try:
        f=open(filename.GetValue(),'w')
        f.writelines(contents.GetValue())
    except Exception:'Erro in writing data...'
    finally:
        f.close()
 
def enablebutton(event):
        openButton.Enable(True)
 
app = wx.App()
win = wx.Frame(None, title="Simple Text Editor", size=(500, 500))
container=wx.Panel(win)
filename = wx.TextCtrl(container) filename.Bind(wx.EVT_SET_FOCUS,enablebutton)
contents = wx.TextCtrl(container, style=wx.TE_MULTILINE | wx.HSCROLL)
openButton = wx.Button(container, label='Open') openButton.Bind(wx.EVT_BUTTON,openfile)
saveButton = wx.Button(container, label='Save') saveButton.Bind(wx.EVT_BUTTON,savefile)
hbox = wx.BoxSizer(wx.HORIZONTAL)
hbox.Add(filename, proportion=1, flag=wx.EXPAND)
hbox.Add(openButton, proportion=0, flag=wx.LEFT, border=5)
hbox.Add(saveButton, proportion=0, flag=wx.LEFT, border=5)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, proportion=0, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(contents, proportion=1,
flag=wx.EXPAND | wx.LEFT | wx.LEFT | wx.LEFT, border=5)
container.SetSizer(vbox)
 
win.Show()
app.MainLoop()
 
Note: The constant wx.EVT_BUTTON indicates button event. The constant wx.EVT_SET_FOCUS indicates focus event. These constants and other useful constants can be found in wx module. You can get help on these constants by type:
>>>help(wx)

HTML Comment Box is loading comments...



This website intents to provide free and high quality tutorials, examples, exercises and solutions, questions and answers of programming and scripting languages:
C, C++, C#, Java, VB.NET, Python, VBA,PHP & Mysql, SQL, JSP, ASP.NET,HTML, CSS, JQuery, JavaScript and other applications such as MS Excel, MS Access, and MS Word. However, we don't guarantee all things of the web are accurate. If you find any error, please report it then we will take actions to correct it as soon as possible.