Я учитель, делающий базовый мини-клиент Steam в качестве учебного упражнения для моего урока программирования. Мы используем Python и tkinter.
Программа генерирует два набора переключателей. Первая - это «библиотека игр» пользователей, где они могут выбрать игру для игры (при выборе радиокнопки ничего не происходит, кроме метки, информирующей пользователя о том, что игра собирается запустить). Второй набор переключателей позволяет пользователям выбрать новую игру для «покупки». Оба набора переключателей создаются с помощью цикла for и списка.
Проблема:
То, что я хочу сделать, это сделать так, чтобы, если вы выбираете игру для «покупки», она добавляется в список user_library, затем уничтожаете / забываете оригинальный набор переключателей библиотеки игр, а затем восстанавливаете переключатели с помощью цикла for. Это также должно сделать кнопку для только что добавленной игры.
Код "забудьте", который я пробовал, только скрывает / удаляет последнюю кнопку raido, сгенерированную циклом for.
Примечание: радиокнопки используются в демонстрационных целях, я понимаю, что выпадающее меню было бы лучше.
Я планировал сделать это с помощью метода, который был связан с кнопкой покупки.
- Метод сначала добавит список user_library с новым названием игры. 2. Затем уничтожьте / забудьте переключатели пользовательской библиотеки, которые были сгенерированы циклом for при первом запуске программы. 3. Используйте другой цикл for для воссоздания переключателей пользовательской библиотеки.
Когда я запускаю программу, «забытый» код, который я пробовал, только скрывает / удаляет последнюю raidobutton, сгенерированную циклом for.
Код ниже сокращен, но должен показывать, что я пытаюсь сделать. Мне удобно добавлять списки, но я не понимаю, почему забывают только последнюю кнопку-переключатель.
Я открыт для лучших способов решения проблемы
libraryGames=["The Witcher 3: Wild Hunt GOTE", "Jurassic World: Evolution", "Red Dead Redemption 2","Mass Effect Trilogy","Subnautica",]
saleGames=["SteamPunk 2077", 29.99, "Fallout 3", 3.99, "Warcraft 4: About dam time", 69.99, "Lego: Terminator", 19.99, "Homework simulator", 14.99]
def __init__(self, parent):
#list that created the library game buttons
for games in range (0, len (libraryGames)):
rb = Radiobutton(frame1, variable = self.library_game, bg =
"#000000",fg="#ffffff", value = games, text =
libraryGames[games],command = self.library_choice)
rb.grid(row = libraryrow, column=0, columnspan = 2,padx=25,
sticky=W,)
libraryrow+=1
#list that created the sale game buttons
for items in range (0, len (saleGames),2):
rb2 = Radiobutton(frame2, variable = self.sale_game, bg =
"#000000",fg="#ffffff",value = items, text =
saleGames[items],command = self.sale_choice)
rb2.grid(row = salerow, column=0, columnspan = 2,padx=25,
sticky=W,)
salerow+=1
#method that removes the radio buttons generated by the first loop when a purchase button is clicked.
def purchase(self):
rb.grid_forget()
# I would then add the loop code to create the radio buttons again