gpt4 book ai didi

python - 从列表框项中获取文本

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:06 24 4
gpt4 key购买 nike

我正在创建一个 session 列表,然后对 session 进行 pickle。这一点有效,但是当我使用右键单击菜单从列表框中删除 session 时,我需要能够从我正在 pickle 的列表中删除该项目。

如何获取当前列表框选择中的文本?

这是我的代码:

class Main(self, root)
def __init__(self):
self.f2=Frame(root)
self.f2.grid()
Label(self.f2, text="Sesion Date:").grid(row=3, column=0)
self.e=Entry(self.f2)
self.e.grid(row=3, column=1)
Button(self.f2, text="Add Session", command=lambda: self.session(client)).grid(row=4, columnspan=2)
scrollbar=Scrollbar(self.f2)
self.sessionbox=Listbox(self.f2, yscrollcommand=scrollbar.set)
self.sessionbox.grid(row=5, columnspan=2)
self.sessionmenu=Menu(self.sessionbox, tearoff=0)
self.sessionmenu.add_command(label="Delete", command=lambda: self.deleteSession(client))
self.sessionbox.bind("<ButtonRelease-2>", self.sessionRightClick)
scrollbar.config(command=self.sessionbox.yview)

def session(self, client):
if len(self.e.get()) == 0:
tkMessageBox.showinfo("Add Session", "Please type a session date\nbefore submitting")
else:
self.sessionlist=[]
self.sessionlist.append("%s" % (self.e.get()))
self.sessionbox.insert(0, "%s" % (self.e.get()))
with open("sessions", "wb") as f:
pickle.dump(self.sessionlist, f)
self.e.delete(0, END)
self.row1+=1

def deleteSession(self, client):
try:
sel=self.sessionbox.curselection()
self.sessionbox.delete(sel)
self.sessionlist.remove()
with open("sessions", "wb") as f:
pickle.dump(self.sessionlist, f)
except:
tkMessageBox.showerror("Delete Session", "No session selected!")

def sessionRightClick(self, event):
self.sessionmenu.post(event.x_root, event.y_root)

root=Tk()
app=Main(root)
root.mainloop()

最佳答案

如果你想获取列表框中的每一项,那么你可以使用它。请记住,返回的是一个 tuple

.get(0, tk.END)

如果您想要当前选择的项目,那么您可以使用它。请记住,返回的是一个 tuple

.curselection()

但是,这只会为您提供所选项目的索引。要获取文本,只需使用类似这样的东西。使用 .curselection() 中的索引值从整个选择中获取项目

import tkinter as tk

l_box = tk.Listbox(...)
all_items = l_box.get(0, tk.END) # tuple with text of all items in Listbox
sel_idx = l_box.curselection() # tuple with indexes of selected items
sel_list = [all_items[item] for item in sel_idx] # list with text of all selected items

关于python - 从列表框项中获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com