Python 如何从Tkinter列表框中提取变量以在脚本的其他地方使用?
因此,我有一个python中的listbox Tkinter对象,它允许我选择多个项目,并打印出所选项目的索引。我想使用该索引来匹配脚本中的其他地方,比如,如果选择了项0,2,4,则运行这组代码或显示表中0,2,4的其他属性,并排除项1和3 这是我的剧本:Python 如何从Tkinter列表框中提取变量以在脚本的其他地方使用?,python,tkinter,listbox,tk,Python,Tkinter,Listbox,Tk,因此,我有一个python中的listbox Tkinter对象,它允许我选择多个项目,并打印出所选项目的索引。我想使用该索引来匹配脚本中的其他地方,比如,如果选择了项0,2,4,则运行这组代码或显示表中0,2,4的其他属性,并排除项1和3 这是我的剧本: Title = ["ABC","DEF","GHI","JKL","MNO"] def select_title(): print(
Title = ["ABC","DEF","GHI","JKL","MNO"]
def select_title():
print(title_list.curselection())
root.destroy()
root = Tk()
title_list = Listbox(root, width = 100, selectmode = MULTIPLE)
i = 0
while i < len(Title):
title_list.insert(END, Title[i])
i += 1
title_list.pack()
my_button = Button(root, text="Select", command=select_title)
my_button.pack()
root.mainloop()
我想把它们用于一个列表=[0,2,4],我可以在其他地方建立索引,这就是我很难弄明白的。我试着在那里放一个返回函数,但在处理这种格式的Tkinter对象时,它似乎不起作用。我非常感谢任何人能提供的任何见解。谢谢
更新:
如果我将代码调整为此,请参见下文,我仍然无法使用def之外的列表:
Title = ["ABC","DEF","GHI","JKL","MNO"]
def select_title():
print(title_list.curselection())
sel = title_list.curselection()
lst = [_ for _ in sel]
print(lst)
root.destroy()
root = Tk()
title_list = Listbox(root, width = 100, selectmode = MULTIPLE)
i = 0
while i < len(Title):
title_list.insert(END, Title[i])
i += 1
title_list.pack()
my_button = Button(root, text="Select", command=select_title)
my_button.pack()
root.mainloop()
lst
在def外部尝试:
Title = ["ABC","DEF","GHI","JKL","MNO"]
def select_title():
print(title_list.curselection())
sel = title_list.curselection()
lst = [_ for _ in sel]
print(lst)
root.destroy()
root = Tk()
title_list = Listbox(root, width = 100, selectmode = MULTIPLE)
i = 0
while i < len(Title):
title_list.insert(END, Title[i])
i += 1
title_list.pack()
my_button = Button(root, text="Select", command=select_title)
my_button.pack()
root.mainloop()
lst
输出:
(0, 2, 4)
[0, 2, 4]
感谢酷云的洞察力。这是至关重要的工作 以下是有效的脚本:
Title = ["ABC","DEF","GHI","JKL","MNO"]
def select_title():
sel = title_list.curselection()
global lst
lst = [_ for _ in sel]
root.destroy()
root = Tk()
title_list = Listbox(root, width = 100, selectmode = MULTIPLE)
i = 0
while i < len(Title):
title_list.insert(END, Title[i])
i += 1
title_list.pack()
my_button = Button(root, text="Select", command=select_title)
my_button.pack()
root.mainloop()
lst
Title=[“ABC”、“DEF”、“GHI”、“JKL”、“MNO”]
def select_title():
sel=title_list.curselection()
全球地表温度
lst=[[用于选择中的]
root.destroy()
root=Tk()
title\u list=Listbox(根,宽度=100,选择模式=MULTIPLE)
i=0
而我(头衔):
标题列表。插入(结束,标题[i])
i+=1
title_list.pack()
我的按钮=按钮(根,text=“选择”,命令=选择标题)
我的按钮包()
root.mainloop()
lst
给它分配一个变量,比如sel=title\u list.curselection()
然后lst=[\ufor\uuu-in-sel]
,现在lst
是这些选择的索引。我尝试使用它的方式不起作用。我仍然无法使用def之外的列表。我希望能够做到这一点。因此,假设我在Jupyter笔记本中找到一个新的降价行并键入“lst”,我将得到“[0,2,4]的输出。请查看上面的更新。您必须在选择标题()中说全局lst
)
成功了!非常感谢!只需提示一下,您的while
循环可以更改为for
循环,就像Title:Title\u列表中的for i。插入(END,i)