def change_statistics(self):
"""Updates widgets in frame"""
q = 1
new_player_list = player_list[:] # player_list[:] is a list of player objects.
new_percentage_list = percentage_list[:] # percentage_list[:] is a list of float numbers where each number represent the percentage attribute of a player object.
while len(new_percentage_list) != 0:
for player in new_player_list:
if player.percentage == max(new_percentage_list):
player.position = q
self.children[f"position_{q}"].configure(text = f"{player.position}")
self.children[f"name_{q}"].configure(text = player.name)
self.children[f"number_of_w_{q}"].configure(text = f"{player.number_of_w}")
self.children[f"number_of_games_{q}"].configure(text = f"{player.number_of_games}")
self.children[f"percentage_{q}"].configure(text = f"{player.percentage}")
new_player_list.remove(player)
new_percentage_list.remove(player.percentage)
q += 1
break
Я пробовал использовать self.update_idletasks() перед прерыванием, и единственная разница заключается в том, что этот метод будет работать для первого цикла в цикле while, но затем он перестает работать.
У меня есть метод, который не работает при вызове. Программа просто перестает работать и ничего не происходит. [code]def change_statistics(self): """Updates widgets in frame""" q = 1 new_player_list = player_list[:] # player_list[:] is a list of player objects. new_percentage_list = percentage_list[:] # percentage_list[:] is a list of float numbers where each number represent the percentage attribute of a player object.
while len(new_percentage_list) != 0: for player in new_player_list: if player.percentage == max(new_percentage_list): player.position = q self.children[f"position_{q}"].configure(text = f"{player.position}") self.children[f"name_{q}"].configure(text = player.name) self.children[f"number_of_w_{q}"].configure(text = f"{player.number_of_w}") self.children[f"number_of_games_{q}"].configure(text = f"{player.number_of_games}") self.children[f"percentage_{q}"].configure(text = f"{player.percentage}") new_player_list.remove(player) new_percentage_list.remove(player.percentage) q += 1 break [/code] Я пробовал использовать self.update_idletasks() перед прерыванием, и единственная разница заключается в том, что этот метод будет работать для первого цикла в цикле while, но затем он перестает работать.