def init_top20s(self):

        """Creates top twenty label boxes for offensive positions.
        defenses and kickers are ommitted because of limited screen
        space and low value""" 

        # Randomly generate players for development
        # players = generate_fake_players()

        players = self.draft.get_players()

        self.top20_widgets = []
        self.top20_widgets.append(DPListbox(self.top_container, players,
                                                   "Overall", True)) 
        for pos in OFFENSIVE_POSITIONS:
            pos_players = filter_players_by_position(players, pos, 20)
            self.top20_widgets.append(DPListbox(self.top_container,
                                                pos_players, pos))

        for widget in self.top20_widgets:
            widget.pack(side=LEFT)
    def draft_button_click(self, event):
        current_focus = self.focus_get()
        if isinstance(current_focus, Listbox):

            # Get index/name/player/position object and clear entry
            index = current_focus.curselection()[0]
            name = current_focus.get(index)
            current_focus.delete(index)
            draftee = self.draft.draft_by_name(name)
            position = draftee.get_position()

            # discover id of active top 20 widget
            counter = 0
            for widget in self.top20_widgets:
                if current_focus.winfo_parent() == str(widget):
                    current_focus = widget
                    break
                else:
                    counter += 1

            if counter == 0:
                # case in which player has been selected from overall top 20
                if position != "DST" and position != "K":
                    counter = OFFENSIVE_POSITIONS.index(position) + 1
                    needs_replacement = name in self.top20_widgets[counter].get(0, END)
                    self.top20_widgets[counter].delete_by_name(name)
            else:
                # if player has been selected from position sorted top 20
                self.top20_widgets[0].delete_by_name(name)
                needs_replacement = True

        # If player was drafted through the entry field
        elif isinstance(current_focus, Entry):
            name = current_focus.get()
            current_focus.delete(0, END)
            draftee = self.draft.draft_by_name(name)
            if draftee == None:
                return
            position = draftee.get_position()
            self.top20_widgets[0].delete_by_name(name)
            if not position == "DST" and not position == "K":
                counter = OFFENSIVE_POSITIONS.index(position) + 1
                needs_replacement = name in self.top20_widgets[counter].get(0, END)
                self.top20_widgets[counter].delete_by_name(name)

        # insert new name to fill position top 20 widget if not K or D/ST
        if not position == "DST" and not position == "K" and needs_replacement:
            new_list = filter_players_by_position(self.draft.get_players(),
                                                  OFFENSIVE_POSITIONS[counter - 1], 20)
            if len(new_list) == 20:
                self.top20_widgets[counter].add_name(new_list[-1].get_name())

        # send player to Team, retreive placement info, adjust TeamFrame
        current_pick = self.draft.get_current_pick()
        drafting_team = self.draft.order[current_pick]
        placement = self.draft.teams[drafting_team].place_draftee(draftee, current_pick)
        self.team_widgets[drafting_team].update_position(draftee.get_name(), placement)

        # increment counter, update highlights for TeamLabels
        self.draft.increment_current_pick()
        self.team_widgets[drafting_team].unhighlight_team()
        self.team_widgets[self.draft.order[
                          self.draft.current_pick]].highlight_team()

        self.update_next_rounders()
        # FOR RESEARCH
        if TRACK_PROJECTIONS:
            self.track_next_rounder_availability_alt()