Вы не можете помещать объекты в список. Окно списка ничего не знает об объектах Python и может отображать только строки. Если вы попытаетесь вставить объект в список, tkinter преобразует этот объект в строку, а затем сохранит строку (и только строку) в списке. Позже вы не сможете получить реальный объект.
Однако, если вы хотите, чтобы он автоматически преобразовывал ваш объект в строку с именем по вашему выбору, вы можете переопределить метод __str__
вашего класса. ,Именно эту функцию tkinter использует для преобразования объекта в строку перед вставкой его в виджет.
Например, вот определение класса, которое будет возвращать атрибут имени при преобразовании объекта в строку:
class Character():
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
Вот пример использования этого класса в программе tkinter.
import tkinter as tk
root = tk.Tk()
listbox = tk.Listbox(root)
listbox.pack(fill="both", expand=True, padx=2, pady=2)
c1 = Character("Inigo Montoya")
c2 = Character("Fezzik")
listbox.insert("end", c1)
listbox.insert("end", c2)
root.mainloop()
