Я создал список optionMenus через для l oop. Мне нужно t ie от моего выбора optionMenu до опции option, из которой он получен. Я думаю, что for l oop делает это так, что я не могу собрать вместе ie два значения.
def get_selection(choice):
popUp_list.append(choice)
if num >= 1 and num <5:
for num in range(1,5):
choice = StringVar(root2)
choices = {'Application', 'File', 'Website'}
choice.set('Choose Type')
popUpMenu = OptionMenu(root2, choice, *choices, command = Controller.get_selection)
popUpMenu.grid(row=num, column=0)
Я знаю, что было бы проще жестко закодировать опцию меню, но по причинам, в которые я не хочу входить, необходим для l oop. Не специально для этой части, а для другой части моего кода. Здесь проще использовать этот пример.
Когда в меню выбран вариант, я могу получить значения, и это прекрасно работает. Однако, если пользователь делает первый выбор, а затем хочет обновить свой выбор, у меня нет возможности это зафиксировать. Создает «новый» выбор, не привязанный к опции Menu. Таким образом, новая опция не заменяет старой опции. Он просто создает новый выбор.
Есть ли способ передать число popUpMenu через функцию Controller .get_selection? При попытке передать другую переменную, выполняющую что-то в строках:
def get_selection(choice, num):
popUp_list.append(choice)
print(num)
popUpMenu = OptionMenu(root2, choice, *choices, command = lambda: Controller.get_selection(choice, num))
Я получаю сообщение об ошибке ниже и не могу выбрать опцию. Я не уверен, что поставить в качестве первого значения. Выбор ввода не работает.
self .__ callback (self .__ value, * args) TypeError: () принимает 0 позиционных аргументов, но 1 было дано