Python 3.x 通过Tkinter中的listvariable修改Listbox条目

Python 3.x 通过Tkinter中的listvariable修改Listbox条目,python-3.x,tkinter,Python 3.x,Tkinter,我在一篇教程中读到,我可以将tkinter.Listbox中的数据分离到我自己的列表中。我在这里的例子中这样做了。 但是,如何根据我自己的variablelist操作Listbox条目的顺序呢 #!/usr/bin/env python3 from tkinter import * root = Tk() mylist = ['one', 'two', 'three'] var = StringVar(value=mylist) box = Listbox(master=root, list

我在一篇教程中读到,我可以将
tkinter.Listbox
中的数据分离到我自己的列表中。我在这里的例子中这样做了。 但是,如何根据我自己的variablelist操作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
refresh absolut会自动刷新其内容。因此,我不必触摸
列表框
。我只需要触摸
列表()
中的数据

有办法吗?

get()
delete()
insert()

您可以从
中获取值,将其移除并放置在新位置


或者您可以从
框中删除所有项目
,并从
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()

您可以从
框中删除所有项目,并从
mylist
中添加新项目。我明白了。该机构不是100%自动的。谢谢