通过Tkinter中的listvariable修改列表框条目

时间:2017-11-19 23:32:06

标签: python-3.x tkinter

我在教程中读到我可以将数据从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()

中的数据

有办法吗?

1 个答案:

答案 0 :(得分:1)

Listboxget()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()