我在教程中读到我可以将数据从tkinter.Listbox
分成我自己的列表。我在这里的例子中这样做了。
但是,如何根据我自己的变量列表操作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()
。
有办法吗?
答案 0 :(得分:1)
Listbox有get()
,delete()
和insert()
您可以从box
获取价值,将其移除并将其放入新位置。
或者,您可以从box
中删除所有项目,然后添加mylist
中的新项目
我认为这种方法更具普遍性。
box.delete(0, 'end')
for item in mylist:
box.insert('end', item)
因为您使用listvariable
所以您可以直接在var
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()