【发布时间】:2018-11-25 14:38:28
【问题描述】:
我编写了一个代码来使用 tkinter ttk Treeview 显示一个表格。 然后,我选择了桌子上的一个项目,并对其项目进行了更改。 因此,我通过删除所有项目并插入新项目来更新表。 但是为什么这些项目仍然指的是新表添加的旧表项目?
import tkinter as tk
from tkinter import ttk
win=tk.Tk()
def testcommand():
for i in tabel.get_children():
print(i)
for i in tabel.get_children():
tabel.delete(i)
for i in tes:
tabel.insert('', 'end', text=str(i))
for i in tabel.get_children():
print(i)
tabel=ttk.Treeview(win,selectmode='browse')
tabel.heading('#0',text="COBA")
tes=[1,2,3,4]
for i in tes:
tabel.insert('','end',text=str(i))
tabel.pack()
ttk.Button(win,text='Test',command=testcommand).pack()
win.mainloop()
在第一个 'print' 语句中,我得到了 ('I001','I002','I003','I004') 项,但是在我更新树视图后,该项继续为 ('I005','I006 ','I007','I008')。
为什么树视图中的“删除方法”没有将项目重置回“I001”? 谁能帮帮我?
【问题讨论】:
-
我看不出如何更改列表中的项目,它们是固定字符串,在程序运行时无法编辑。与其关注当前正在发生的事情,不如关注你想要实现的目标是什么?期望的结果是什么?
-
只是我对数据表进行了很多更改,我想通过一次更新它来以简单的方式在Treeview上更新它,而不是一个一个地更改它的值。
-
顺便说一下,如果你对 tkinter 的默认项目名称不满意,你可以自己命名:
tree.insert('', 'end', 'item%i' % i, text=str(i))。 -
谢谢 j_4321。真的很有帮助。