擅长:python、mysql、java
<blockquote>
<p>It is like the iid isn't reset once they are deleted.</p>
</blockquote>
<p>是的,确切地说,tkinter以增量方式生成默认iid,而不关心之前的某些项目是否已被删除。如果您需要删除/插入项目,并且仍然能够使用相同的iid访问它们,则在创建项目时应为自己分配iid:</p>
<pre><code>tree.insert(parent, index, my_iid, values=...)
</code></pre>
<p>如果您只想更改给定单元格中的值,JacksonPro的答案非常有效。但是,如果要同时更改整行,可以使用</p>
<pre><code>tree.item(iid, values=new_values, text=new_text)
</code></pre>
<p>下面是一个示例,当双击整行时,整行都会发生更改:</p>
<pre><code>import tkinter as tk
from tkinter import ttk
from random import randrange
def click(event):
iid = tree.focus() # get selected item
tree.item(iid, text='%s - reset' % iid, values=[0, 0])
columns = ['col1', 'col2']
root = tk.Tk()
tree = ttk.Treeview(root, columns=columns)
for col in columns:
tree.heading(col, text=col)
tree.pack()
for i in range(10):
tree.insert('', 'end', 'item%i' % i, text='item%i' % i, values=[randrange(0, 10) for c in columns])
tree.bind('<Double-1>', click)
root.mainloop()
</code></pre>