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()
你必须重新阅读文件,每次你想更新的部件。例如:
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)
谢谢!这绝对完美!你为我节省了很多头痛! –
而不是使用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()
这会导致标签在点击按钮时改变为再见。 希望我可以帮助:)
谢谢你花时间回答!我试图制作一个按钮来将标签设置为有问题的文件的stringvar,但它只是使标签变为空白。 –
标签小部件是显示文件内容的错误选择。 –
而不是使用标签,请尝试文字 – Jake
为什么使用文本?使用带有StringVar的标签。 –