title: Name error: name "apply" is not defined
body: <p>I have the following error when I push the scroll down on the multilistbox. Hope you can help me:</p>
  
  <pre><code>  File "...", line 44, in _scroll
      apply(l.yview, args)
  Name error: name "apply" is not defined
  </code></pre>
  
  <p>This is my code</p>
  
  <pre><code>from tkinter import *
  
  class MultiListbox(Frame):
      def __init__(self, master, lists):
          Frame.__init__(self, master)
          self.lists = []
          for l,w in lists:
              frame = Frame(self); frame.pack(side=LEFT, expand=YES, fill=BOTH)
              Label(frame, text=l, borderwidth=1, relief=RAISED).pack(fill=X)
              lb = Listbox(frame, width=w, borderwidth=0, selectborderwidth=0,
                   relief=FLAT, exportselection=FALSE)
              lb.pack(expand=YES, fill=BOTH)
              self.lists.append(lb)
              lb.bind('&lt;B1-Motion&gt;', lambda e, s=self: s._select(e.y))
              lb.bind('&lt;Button-1&gt;', lambda e, s=self: s._select(e.y))
              lb.bind('&lt;Leave&gt;', lambda e: 'break')
              lb.bind('&lt;B2-Motion&gt;', lambda e, s=self: s._b2motion(e.x, e.y))
              lb.bind('&lt;Button-2&gt;', lambda e, s=self: s._button2(e.x, e.y))
          frame = Frame(self); frame.pack(side=LEFT, fill=Y)
          Label(frame, borderwidth=1, relief=RAISED).pack(fill=X)
          sb = Scrollbar(frame, orient=VERTICAL, command=self._scroll)
          sb.pack(expand=YES, fill=Y)
  
      def yview(self, *args):
          """connect the yview action together"""
          self.lb1.yview(*args)
          self.lb2.yview(*args)
  
      def _select(self, y):
          row = self.lists[0].nearest(y)
          self.selection_clear(0, END)
          self.selection_set(row)
          return 'break'
  
      def _button2(self, x, y):
          for l in self.lists: l.scan_mark(x, y)
          return 'break'
  
      def _b2motion(self, x, y):
          for l in self.lists: l.scan_dragto(x, y)
          return 'break'
  
      def _scroll(self, *args):
          for l in self.lists:
              apply(l.yview, args)
  
      def curselection(self):
          return self.lists[0].curselection()
  
      def delete(self, first, last=None):
          for l in self.lists:
              l.delete(first, last)
  
      def get(self, first, last=None):
          result = []
          for l in self.lists:
              result.append(l.get(first,last))
          if last: return apply(map, [None] + result)
          return result
  
      def index(self, index):
          self.lists[0].index(index)
  
      def insert(self, index, *elements):
          for e in elements:
                  i = 0
          for l in self.lists:
              l.insert(index, e[i])
              i = i + 1
  
      def size(self):
          return self.lists[0].size()
  
      def see(self, index):
          for l in self.lists:
              l.see(index)
  
      def selection_anchor(self, index):
          for l in self.lists:
              l.selection_anchor(index)
  
      def selection_clear(self, first, last=None):
          for l in self.lists:
              l.selection_clear(first, last)
  
      def selection_includes(self, index):
          return self.lists[0].selection_includes(index)
  
      def selection_set(self, first, last=None):
          for l in self.lists:
              l.selection_set(first, last)
  
  if __name__ == '__main__':
      tk = Tk()
      Label(tk, text='MultiListbox').pack()
      mlb = MultiListbox(tk, (('Clave', 20), ('Descripcion', 20), ('Existencia', 20)))
  
      lineas = len(open("productos-doc1.txt").readlines())
      totalLineas=(int(lineas))
  
      try:
          x = 0
          while 0 != totalLineas:
              abrir = open("productos-doc1.txt","r+")#ABRE EL ARCHIVO
              leer = abrir.readlines()
              renglon = leer[x]
              splitRenglon = renglon.split("'")
              clave = splitRenglon[0]
              descripcion = splitRenglon[1]
              existencia = splitRenglon[3]
              mlb.insert(END, (clave, descripcion, existencia))
              mlb.pack(expand=YES,fill=BOTH)
  
              x = x+1
      except IndexError:
          mlb.insert(END,"FINISH" )
  
      tk.mainloop()
  </code></pre>