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()