Python - tkinter Treeview不更新整数变量

时间:2018-02-21 02:36:49

标签: python tkinter

第一组代码有效。它显示更新变量。但是,在第二个代码中,当我将变量放在Treeview小部件中时,变量只保持为0并且不会更新。为什么这与标签有效但不与树视图一起使用?解决这个问题的最简单方法是什么?

首先(工作):

from tkinter import *
from tkinter import ttk
import threading
import time

def fun():
    for i in range(10):
        var.set(var.get() + 1)
        time.sleep(.5)

t = threading.Thread(target=fun)

root = Tk()

var = IntVar()
var.set(0)

mainframe = ttk.Frame(root)
mainframe.grid(column = 0, row = 0)
label = ttk.Label(mainframe, textvariable=var)
label.grid(column = 0, row = 0)

t.start()
root.mainloop()

第二(不起作用):

from tkinter import *
from tkinter import ttk
import threading
import time

def fun():
    for i in range(10):
        var.set(var.get() + 1)
        time.sleep(.5)

t = threading.Thread(target=fun)

root = Tk()

var = IntVar()
var.set(0)

mainframe = ttk.Frame(root)
mainframe.grid(column = 0, row = 0)

tree = ttk.Treeview(mainframe, columns = ('number'), height = 1)

tree.insert('', 'end', text = 'Number', values = var.get())
tree.grid(column=0, row=0)

t.start()
root.mainloop()

1 个答案:

答案 0 :(得分:1)

fun修改为:

def fun():
    for i in range(10):
        var.set(var.get() + 1)
        x = tree.get_children()
        tree.item(x, text = 'Number', values = var.get())
        time.sleep(.5)

get_children 方法返回元组项ID的列表,每个子树的一个子项。使用 tree.item ,然后使用所需的ID更新孩子

在第二个程序中以及变量var,您还必须更新树的子项