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

问题描述:

我对这个站点和python一般都很陌生,所以请原谅我的乱码。我试图用Tkinter接口在Python中制作一种即时通讯工具。我的学校有一个网络,您可以通过该网络交换文件并编辑其他人文件,如果以正确的权限保存在正确的区域。Tkinter:如何使tkinter文本小部件更新?

我大部分都知道了,程序可以保存到一个文本文件并读取它,但是,包含文本的文本小部件本身并不会自行更新,并且所有的尝试都失败了草草收场。任何帮助将不胜感激,因为我似乎无法弄清楚。

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() 
+1

为什么使用文本?使用带有StringVar的标签。 –

你必须重新阅读文件,每次你想更新的部件。例如:

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) 
+0

谢谢!这绝对完美!你为我节省了很多头痛! –

而不是使用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() 

这会导致标签在点击按钮时改变为再见。 希望我可以帮助:)

+0

谢谢你花时间回答!我试图制作一个按钮来将标签设置为有问题的文件的stringvar,但它只是使标签变为空白。 –

+0

标签小部件是显示文件内容的错误选择。 –

+0

而不是使用标签,请尝试文字 – Jake