Python-将列表框选择返回为列表

Python-将列表框选择返回为列表,python,tkinter,listbox,Python,Tkinter,Listbox,我遇到过比我遇到的问题更复杂的几种解决方案,因此如果这是重复的话,我很抱歉,但在这种情况下,我似乎无法根据我的需要调整其他解决方案 我需要显示一个填充的列表框,并使用多重选择方法将选择返回为一个列表,以后可以拆分和操作 以下是我目前掌握的情况: from Tkinter import * def onselect(evt): w = evt.widget index = int(w.curselection()[0]) value = w.get(index)

我遇到过比我遇到的问题更复杂的几种解决方案,因此如果这是重复的话,我很抱歉,但在这种情况下,我似乎无法根据我的需要调整其他解决方案

我需要显示一个填充的列表框,并使用多重选择方法将选择返回为一个列表,以后可以拆分和操作

以下是我目前掌握的情况:

from Tkinter import *

def onselect(evt):
    w = evt.widget
    index = int(w.curselection()[0])
    value = w.get(index)
    selection = [w.get(int(i)) for i in w.curselection()]
    return selection

master = Tk()

listbox = Listbox(master,selectmode=MULTIPLE)

listbox.pack()

for item in ["one", "two", "three", "four"]:
    listbox.insert(END, item)

listbox.bind('<<ListboxSelect>>', onselect)

mainloop()
从Tkinter导入*
def onselect(evt):
w=evt.widget
index=int(w.curselection()[0])
值=w.get(索引)
selection=[w.get(int(i))代表w.curselection()中的i]
返回选择
master=Tk()
列表框=列表框(主控,选择模式=多个)
listbox.pack()
对于[“一”、“二”、“三”、“四”]中的项目:
列表框.插入(结束,项目)
listbox.bind(“”,onselect)
mainloop()

如何正确地将选择变量存储为列表?

我自己正在学习这个主题。如果我理解正确,您希望存储并使用此列表以备将来使用。我认为将listbox定义为一个类,并将列表存储为一个class属性是可行的

以下内容借鉴了Python编程,第4版,第9章。将来可以根据需要以myList.selections的形式访问该列表

from tkinter import *


class myList(Frame):
    def __init__(self, options, parent=None):
        Frame.__init__(self, parent)
        self.pack(expand=YES, fill=BOTH)
        self.makeWidgets(options)
        self.selections = []

    def onselect(self, event):
        selections = self.listbox.curselection()
        selections = [int(x) for x in selections]
        self.selections = [options[x] for x in selections]
        print(self.selections)

    def makeWidgets(self, options):
        listbox = Listbox(self, selectmode=MULTIPLE)
        listbox.pack()
        for item in options:
            listbox.insert(END, item)
        listbox.bind('<<ListboxSelect>>', self.onselect)
        self.listbox = listbox


if __name__ == '__main__':
    options = ["one", "two", "three", "four"]
    myList(options).mainloop()
从tkinter导入*
类myList(框架):
定义初始化(self,options,parent=None):
帧。\uuuu初始化(自,父)
self.pack(扩展=是,填充=两者)
self.makeWidgets(选项)
self.selections=[]
def onselect(自身、事件):
selections=self.listbox.curselection()
选择=[int(x)表示选择中的x]
self.selections=[选项[x]用于选择中的x]
打印(自我选择)
def makeWidgets(自身、选项):
listbox=listbox(self,selectmode=MULTIPLE)
listbox.pack()
对于选项中的项目:
列表框.插入(结束,项目)
listbox.bind(“”,self.onselect)
self.listbox=listbox
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
选项=[“一”、“二”、“三”、“四”]
myList(选项).mainloop()

到目前为止,您的代码有什么问题?也许我没有正确访问选择列表?我不知道如何访问它,我需要用列表的值创建目录。你是说onselect没有被调用吗?我相信是的,如果我在onselect中添加“打印选择”,它会在每次更改时打印一行显示选择。我需要在函数外部访问它,以自动创建名称与所选内容的值相等的目录。因为您似乎没有使用任何类型的类结构,所以只需使用全局变量它会在交互窗口中动态更新所选内容,这样绝对有效。谢谢,但是我如何访问列表?假设我需要将文件夹命名为与第N个索引相同的值?@N\u 8\u我试图编写一个快速示例,但失败了。简而言之,糟糕的答案是,我认为这取决于是否需要在接口循环运行时访问列表,还是在其终止后访问列表。如果是前者,并且您将myList的一个实例(例如“Bob”)打包到一个更大的框架中,那么
folder name=Bob.selections[n]
应该可以工作。如果不是的话,“鲍勃”将不得不在信息“死亡”之前传递信息,而我仍在学习如何工作:)也许几周后我可以给出一个更好的答案。