pythontkinter:将对象插入到listbox中,然后将它们取出(不是字符串)

2024-04-23 22:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表框,显示一些对象:

# extra is some array of 'extra' objects I get from a database
self.extrasList = Listbox(self, selectmode='multiple')
self.extrasList.pack(fill=X, expand=True)
for extra in extras:
    self.extrasList.insert(END, extra)

extra对象的__str__被重写,因此它们显示得很好。在

但是,当我后来这样做的时候:

^{pr2}$

有没有办法把对象从列表框中取出? 而不是一根绳子?在

我唯一能找到的就是手动保持列表框和另一个列表同步。但这很容易出错。在


Tags: of对象fromselfgetobjectsissome
2条回答

不,除了字符串之外,没有其他方法可以从列表框中获取数据。在

您可以这样做:将对象放入字典(字符串作为键,对象作为值)并将键插入列表框,然后使用listbox.selection_get().split()检索所选的键,并使用它们从dict中获取所需的对象

import tkinter as tk

root = tk.Tk()

def print_selection(event):
    for key in listbox.selection_get().split():
        print(extras[key])

extras = {
    'object1': 1,
    'object2': 2,
    }

listbox = tk.Listbox(root, selectmode='multiple')
for key in extras:
    listbox.insert('end', key)
listbox.grid(row=0, column=0)
listbox.bind('<Key-Return>', print_selection)
tk.mainloop()

相关问题 更多 >