2016-11-24 62 views
1

初學編程的位置,努力使基本GUI的教程中,我在網上下的一部分,但他們沒有說如何讓一個文本框使用輸出的更新你的代碼的其他部分。的Python的Tkinter通過功能更新文本框的內容

我試過多種其他的答案在網站上,其中包括使用STRINGVAR的,這讓我無處,另一個使用裝飾,其餘的似乎是我的出路深度。

這裏是我的代碼:

import tkinter as tk 

import time 
#Creating Root 
root = tk.Tk() 


#GUI TEMPLATE 


frame =tk.Frame(root, 
      height = 100, 
      width = 400) 
frame.pack() 
v = StringVar() 

colour = ["red","blue","green","white","yellow"] 
labels = range(5) 
#change number to change how many labels 
for i in range(5): 
    l= tk.Label(root, 
      text = colour[i], 
      bg = colour[i]) 
    l.place(x = 10 +i*70, y = 10, width=60, height=25) 




T1 = tk.Text(root, height=2, width=40) 
words = "Don't name your files after module names!" 
T1.insert(tk.END, textvariable=v) 

T1.place(x = 10, y= 40) 

S = tk.Scrollbar(root) 
S.config(command=T1.yview) 
S.place(x = 340, y=40) 

T1.config(yscrollcommand=S.set) 

root.mainloop() 

v.set("Something Else!") 

現在,它應該輸出的彩色標籤的一排,工作正常,並配有滾動條,應立即更新閱讀「別的東西文本框!',它不能正常工作。

相反,我得到以下錯誤:

NameError:名字「STRINGVAR」沒有定義

我知道這個錯誤是什麼意思,它只是我已經打了一堵牆,當談到找到一個解決方案這對我很有用,並且不需要博士學位就可以理解。

我要求的是如果有人能給我一個解決方案,可以爲此工作,並希望解釋它!

在此先感謝。

編輯: 所以固定的語法錯誤,然後找出什麼,我試圖做是不行的,我怎麼會去這之後?

我可以使用標籤嗎?還是有另一種更好的方法? 再次感謝!

回答

1

StringVar應通過tk訪問:

v = tk.StringVar() 

在另一方面,tk.Text.insert不採取textvariable參數,所以下面將不工作:

T1.insert(tk.END, textvariable=v) 
#     ^^^^^^^^^^^^?? 

docs

Unlike for example the entry widget, text widgets don't support a "textvariable" configuration option

另請參閱How can I connect a StringVar to a Text widget in Python/Tkinter?至於爲什麼這不起作用。

+0

謝謝!我從來沒有想過通過tk嘗試訪問它。至於第二部分,文本變量是如何工作的?我無法在網上找到很多,很抱歉提出另一個問題! –

0

我和學用Tkinter的線程嘗試,並取得了一些工作,以插入和更新在Python3一個Tkinter的文本框這可能是幫助文本。

我發現通過刪除文本,我可以插入新文本。直到我刪除了現有文本的插入文本的指令被忽略。

{ foo = input("Give me input: ") 
    self.T.delete("1.0", END) #Clear the text window so we can write. 
    self.T.insert(END,foo)  #Write the new text.} 
+0

我試圖發佈我的整個文件,但格式是一團糟。 –