write contact form in wxPython?

I have a code. when it runs, you click on add contact button and add som contact. when you press on eatch contacts, it just shows you the last contact information you have been added. I want to when I press on eatch contact, shows me the contacts information I have ben blicked. who can help me to solve this problem?? below code,

import wx
from wx._core import RB_GROUP, TE_READONLY
import sys
import os
from _ssl import nid2obj

class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(500,500))
        self.panel = wx.Panel(self, -1)
        self.contactslist =[]
        self.path = os.getcwd()+'\\contacts-db'
        self.nc = wx.Button(self.panel, label='new contact')
        self.nc.Bind(wx.EVT_BUTTON, self.newcontact)
        self.displaycontacts()
        self.Show(True)

    def displaycontacts(self):
        for roots, dirs, files  in os.walk(self.path):
            for filename in files:
                #self.contactslist.append(filename)
                self.cntct = wx.Button(self.panel, label=filename)
                self.cntct.Bind(wx.EVT_BUTTON, self.clickcontacts)

    def clickcontacts(self, e):
        self.oc =self.path+'\\'+self.cntct.GetLabel()
        self.oc2 = open(self.oc, 'r')
        prt = wx.TextCtrl(self.panel, value=self.oc2.read())

    def newcontact(self, e):
        self.val = ''
        self.f1 = wx.TextCtrl(self.panel, value='enter your first name', pos=(0,0))
        self.f1.SetFocus()
        self.f2 = wx.TextCtrl(self.panel, value='enter your last name', pos=(0,50))

        self.rbm = wx.RadioButton(self.panel, label='male', style=RB_GROUP, pos=(0,100))
        self.rbm.Bind(wx.EVT_RADIOBUTTON, self.male)
        self.rbf = wx.RadioButton(self.panel, label='female')
        self.rbf.Bind(wx.EVT_RADIOBUTTON, self.female)
        self.btn = wx.Button(self.panel, label='show', pos=(0,200))
        self.btn.Bind(wx.EVT_BUTTON, self.showform)
        self.s = wx.TextCtrl(self.panel, value=self.val, style=wx.TE_MULTILINE, size=(800,800))
        self.clrbtn = wx.Button(self.panel, label='clear', pos=(800,800))
        self.clrbtn.Bind(wx.EVT_BUTTON, self.onclear)
        self.af = wx.Button(self.panel, label='add additional field')
        self.af.Bind(wx.EVT_BUTTON, self.additionalfield)
        self.sv = wx.Button(self.panel, label='save')
        self.sv.Bind(wx.EVT_BUTTON, self.save)


    def showform(self, e):
        self.s.SetValue('first name: '+self.f1.GetValue()+'\nlast name: '+self.f2.GetValue()+self.val)

    def male(self, e):
        self.val=''
        self.val = '\ngender: male'

    def female(self, e):
        self.val=''
        self.val='\ngender: female'

    def onclear(self, e):
        self.s.Clear()
        self.f1.Clear()
        self.f2.Clear()

    def additionalfield(self, e):
        self.x = wx.TextCtrl(self.panel, value='\nenter field name: ')
        self.x.SetFocus()
        self.y = wx.TextCtrl(self.panel, value='enter information ')
        self.add = wx.Button(self.panel, label='add')
        self.add.Bind(wx.EVT_BUTTON, self.additionalfieldappend)

    def additionalfieldappend(self, e):
        self.s.AppendText('\n'+self.x.GetValue()+': '+self.y.GetValue())
        self.x.Destroy()
        self.y.Destroy()

    def save(self, e):
        if not os.path.exists(self.path):
            os.makedirs(self.path)
        cnt = open(self.path+'\\'+self.f1.GetValue()+self.f2.GetValue()+'.txt', 'x')
        cnt.write(self.s.GetValue())
nid2obj


app = wx.App()
frame = MyFrame(None, 'contact form')
app.MainLoop()

CRUD (create, read, update and delete) is what you need. Google “wxpython crud” and you will find videos, code, and tutorials that will help you with creating python code to allow simple CRUD operations such as what you are trying to do. Unless there is some other reason you need to avoid using the tools that are designed to your best bet is to use those tools.
Johnf