【问题标题】:Updating tkinter Treeview更新 tkinter 树视图
【发布时间】: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。真的很有帮助。

标签: python tkinter treeview


【解决方案1】:

树视图项目的 Tkinter 默认名称是“I001”、“I002”、...当从树视图中删除所有项目时,用于创建名称的计数器不会重置。

如果想要重置项目名称,他们必须在创建项目时自己明确命名:

tree.insert('', 'end', <name>, **kw)

改编OP的代码,它给出了

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', 'item%i' % i, text=str(i)) # explicitly name the item

    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', 'item%i' % i, text=str(i))  # explicitly name the item
tabel.pack()
ttk.Button(win,text='Test',command=testcommand).pack()

win.mainloop()

点击测试按钮时的输出是

item1
item2
item3
item4
item1
item2
item3
item4

正如 OP 所期望的那样。

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2017-02-06
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多