Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Modified version of https://stackoverflow.com/a/6556312/402645 that runs on
- # the latest wxPython 4.1.1
- import wx
- import wx.html
- class PhoneNumbers(wx.html.HtmlListBox):
- def __init__(self, parent):
- wx.html.HtmlListBox.__init__(self, parent)
- self.data = [
- ("Foo", "3452-453"),
- ("Bar", "5672-346"),
- ]
- self.SetItemCount(len(self.data))
- def OnGetItem(self, n):
- return "<b>%s</b><br>%s" % self.data[n]
- def add_number(self, name, number):
- self.data.append((name, number))
- self.SetItemCount(len(self.data))
- self.Refresh()
- class Frame(wx.Frame):
- def __init__(self):
- wx.Frame.__init__(self, None, size=(200, 400))
- self.numbers = PhoneNumbers(self)
- self.contact_name = wx.TextCtrl(self)
- self.contact_number = wx.TextCtrl(self)
- self.add_btn = wx.Button(self, label="Add contact")
- self.Sizer = wx.BoxSizer(wx.VERTICAL)
- self.Sizer.Add(self.numbers, 1, wx.EXPAND)
- self.Sizer.Add(wx.SearchCtrl(self), 0, wx.EXPAND)
- self.Sizer.Add(wx.StaticText(self, label="Name"), 0, wx.TOP, 10)
- self.Sizer.Add(self.contact_name)
- self.Sizer.Add(wx.StaticText(self, label="Number"), 0, wx.TOP, 5)
- self.Sizer.Add(self.contact_number)
- self.Sizer.Add(self.add_btn, 0, wx.ALL, 10)
- self.numbers.Bind(wx.EVT_LISTBOX, self.OnSelectNumber)
- self.add_btn.Bind(wx.EVT_BUTTON, self.OnAddNumber)
- def OnSelectNumber(self, event):
- name, number = self.numbers.data[event.Selection]
- self.contact_name.Value = name
- self.contact_number.Value = number
- def OnAddNumber(self, event):
- self.numbers.add_number(
- self.contact_name.Value,
- self.contact_number.Value
- )
- app = wx.App()
- app.TopWindow = f = Frame()
- f.Show()
- app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement