Tkinter:如何让tkinter文本小部件更新?

时间:2017-02-10 23:35:53

标签: python-3.x tkinter

我对这个网站和python很新,所以请原谅我凌乱的代码。我试图用Tkinter接口在python中创建一种即时消息。我的学校有一个网络,如果使用正确的权限保存在正确的区域,人们可以在该网络上交换文件和编辑其他人的文件。

我有大部分想通了,程序可以保存到文本文件并读取它,但是,包含文本的文本小部件本身不会更新任何所有尝试使它这样做都失败了。任何帮助都会受到赞赏,因为我似乎无法弄明白。

from tkinter import *

master = Tk()
master.geometry("300x200")
e = Entry(master)
e.pack()


def callback():
    f = open("htfl.txt","a")
    f.write(e.get())
    print (e.get())

b = Button(master, text="get", width=10, command=callback)

b.pack()



file = open("htfl.txt","r") #opens file

#print(file.read(1))
a = file.read()
b = file.read()
print(file.read())

T = Text(master, height=9, width=30)
T.insert(END,a)
T.pack()

def update():
    T.insert(END,a)
    T.after(1000, update)

T.after(1000, update)



mainloop()

3 个答案:

答案 0 :(得分:2)

每次要更新窗口小部件时都必须重新读取该文件。例如:

def update():
    with open("htfl.txt","r") as f:
        data = f.read()
        T.delete("1.0", "end")  # if you want to remove the old data
        T.insert(END,data)
    T.after(1000, update)

答案 1 :(得分:0)

在T.insert(...)对我来说确定之后,T.update()(不带任何参数)。

答案 2 :(得分:-1)

您应该使用Text而不是Label。使用名为StringVar的函数,您可以更新标签的文本。标签是可以在tk窗口上显示文本的小部件。要使用Label命令和StringVar,您需要:

example = StringVar()
example.set(END, a)

examplelabel = Label(master, textvariable=example)
examplelabel.pack()

命令StringVar()只是使文本可以改变,例如

example = StringVar()
example.set("Hello")

def whenclicked():
    example.set("Goodbye")

changebutton = Button(master, text="Change Label", command=whenclicked)
changebutton.pack()

examplelabel = Label(master, textvariable=example)
examplelabel.pack()

这会导致标签在单击按钮时变为再见。 希望我能帮忙:)。