Advertisement
segadude

HtmlListBox wxPython 4.11

Jun 22nd, 2022
991
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.90 KB | None | 0 0
  1. # Modified version of https://stackoverflow.com/a/6556312/402645 that runs on
  2. # the latest wxPython 4.1.1
  3.  
  4. import wx
  5. import wx.html
  6.  
  7.  
  8. class PhoneNumbers(wx.html.HtmlListBox):
  9.     def __init__(self, parent):
  10.         wx.html.HtmlListBox.__init__(self, parent)
  11.         self.data = [
  12.             ("Foo", "3452-453"),
  13.             ("Bar", "5672-346"),
  14.         ]
  15.         self.SetItemCount(len(self.data))
  16.  
  17.     def OnGetItem(self, n):
  18.         return "<b>%s</b><br>%s" % self.data[n]
  19.  
  20.     def add_number(self, name, number):
  21.         self.data.append((name, number))
  22.         self.SetItemCount(len(self.data))
  23.         self.Refresh()
  24.  
  25.  
  26. class Frame(wx.Frame):
  27.     def __init__(self):
  28.         wx.Frame.__init__(self, None, size=(200, 400))
  29.  
  30.         self.numbers = PhoneNumbers(self)
  31.         self.contact_name = wx.TextCtrl(self)
  32.         self.contact_number = wx.TextCtrl(self)
  33.         self.add_btn = wx.Button(self, label="Add contact")
  34.  
  35.         self.Sizer = wx.BoxSizer(wx.VERTICAL)
  36.         self.Sizer.Add(self.numbers, 1, wx.EXPAND)
  37.         self.Sizer.Add(wx.SearchCtrl(self), 0, wx.EXPAND)
  38.         self.Sizer.Add(wx.StaticText(self, label="Name"), 0, wx.TOP, 10)
  39.         self.Sizer.Add(self.contact_name)
  40.         self.Sizer.Add(wx.StaticText(self, label="Number"), 0, wx.TOP, 5)
  41.         self.Sizer.Add(self.contact_number)
  42.         self.Sizer.Add(self.add_btn, 0, wx.ALL, 10)
  43.  
  44.         self.numbers.Bind(wx.EVT_LISTBOX, self.OnSelectNumber)
  45.         self.add_btn.Bind(wx.EVT_BUTTON, self.OnAddNumber)
  46.  
  47.     def OnSelectNumber(self, event):
  48.         name, number = self.numbers.data[event.Selection]
  49.         self.contact_name.Value = name
  50.         self.contact_number.Value = number
  51.  
  52.     def OnAddNumber(self, event):
  53.         self.numbers.add_number(
  54.             self.contact_name.Value,
  55.             self.contact_number.Value
  56.         )
  57.  
  58.  
  59. app = wx.App()
  60. app.TopWindow = f = Frame()
  61. f.Show()
  62. app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement