ttk.OptionMenu () отображение галочки во всех меню

В этом примере, если пользователь выбирает любой параметр в любом раскрывающемся списке, затем нажимает на другое выпадающее меню, ранее выбранный элемент отображал галочку рядом с ним. Даже если этот выбор был выбран в другом меню.

from Tkinter import * from ttk import * choices = ['1st Choice', '2nd Choice', '3rd Choice', '4th Choice'] root = Tk() for each in range(10): OptionMenu(root, StringVar(), choices[0], *choices).pack() root.mainloop() 

Это происходит как на Python 2.7, так и на 3.5.

Я даже переместил список choices в цикл, чтобы он генерировался на каждой итерации, и проблема все еще возникает. Я предполагаю, что элементы списка – это те же объекты, что и tkinter, не дифференцируя между ними OptionMenu. Кажется, мне нужен уникальный список каждый раз через цикл.

Есть ли способ ограничить галочку отображением только на OptionMenu, с которым пользователь взаимодействовал?

Это ошибка в реализации OptionMenu . Он не назначает уникальную переменную для радиообъектов в каждом OptionMenu.

Вы можете исправить это с помощью небольшого кода. В принципе, вам нужно перебрать все элементы в меню и установить атрибут variable .

Вот пример:

 def optionmenu_patch(om, var): menu = om['menu'] last = menu.index("end") for i in range(0, last+1): menu.entryconfig(i, variable=var) ... for each in range(10): sv = StringVar() om = OptionMenu(root, sv, choices[0], *choices) om.pack() optionmenu_patch(om, sv) 

Проблема с отслеживанием ошибок: http://bugs.python.org/issue25684