我在教程中读到我可以将数据从 tkinter.Listbox
分离到我自己的列表中。我在这里的例子中这样做了。
但是我如何根据我自己的变量列表来操纵列表框条目的顺序?
#!/usr/bin/env python3
from tkinter import *
root = Tk()
mylist = ['one', 'two', 'three']
var = StringVar(value=mylist)
box = Listbox(master=root, listvariable=var)
box.pack(fill=BOTH, expand=True)
# this need to affect the list
mylist.append('four')
mylist.remove('two')
mylist.insert(3, mylist.pop(1))
root.mainloop()
此处的列表框(在 GUI 中)不受影响。
据我所知,当我修改数据列表时,Listbox
绝对会自动刷新其内容。所以我不必触摸 Listbox
。我只需要触摸 list()
中的数据。
有办法吗?
最佳答案
Listbox有 get()
、delete()
和 insert()
。
您可以从 box
中获取值,将其移除并放入新位置。
或者您可以从 box
中删除所有项目并从 mylist
添加新项目。
我觉得这个方法比较通用。
box.delete(0, 'end')
for item in mylist:
box.insert('end', item)
因为你使用了listvariable
所以你可以直接在var
中替换list
var.set(mylist)
完整代码
from tkinter import *
root = Tk()
mylist = ['one', 'two', 'three']
var = StringVar(value=mylist)
box = Listbox(master=root, listvariable=var)
box.pack(fill=BOTH, expand=True)
mylist.append('four')
mylist.remove('two')
mylist.insert(3, mylist.pop(1))
var.set(mylist)
root.mainloop()
关于python-3.x - 通过 Tkinter 中的列表变量修改列表框条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383170/