Я пытаюсь написать графический интерфейс в Tkinter, чтобы выбрать один из нескольких сложных объектов Python. Они представляют записи из базы данных; при необходимости я могу восстановить объекты с карты, учитывая их целочисленный уникальный идентификатор.
В идеальном мире виджеты Listbox и OptionMenu принимают последовательность произвольных объектов и функцию, вызываемую для получения строки, отображаемой из этих произвольных объектов; и их переменные дадут один из этих объектов без нежелательных преобразований.
Вместо этого ни один виджет, и, что более важно, ни один тип переменной не имеет дело ни с чем, кроме строк или строк, преобразованных в числа и значения истинности.
У меня нет возможности вернуть мои произвольные объекты, и я не могу создать список, содержащий значения идентификатора, потому что они будут отображать идентификатор, а не разумное строковое представление.
В качестве теста я поместил кортежи в OptionMenu со StringVar, и они были преобразованы в строки.
Существуют ли экзотические виджеты или методы, которые я могу использовать для получения объектов () из переменной или для отображения в виджете строки, которая не соответствует положению в переменной виджета?
Лучший подход, который я могу придумать, - это меню, полное динамически генерируемых лямбд для команд, но оно будет уродливым и потенциально слишком большим.