2017-02-10 82 views
0

我對這個站點和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的標籤。 –

回答

1

你必須重新閱讀文件,每次你想更新的部件。例如:

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

謝謝!這絕對完美!你爲我節省了很多頭痛! –

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

這會導致標籤在點擊按鈕時改變爲再見。 希望我可以幫助:)

+0

謝謝你花時間回答!我試圖製作一個按鈕來將標籤設置爲有問題的文件的stringvar,但它只是使標籤變爲空白。 –

+0

標籤小部件是顯示文件內容的錯誤選擇。 –

+0

而不是使用標籤,請嘗試文字 – Jake