2016-11-24 9 views
1

チュートリアルの一部として基本的なGUIを作成するための初心者プログラマー。私はオンラインでフォローしていましたが、テキストボックスの出力を使ってテキストボックスを更新する方法はありませんあなたのコードの他の部分。Python Tkinter関数を使用してテキストボックスコンテンツを更新する

私はStringVar'sを使用していて、私はどこにもいなくて、もう一つはデコレータを使っていて、残りは私の奥から外に出ていたようです。

はここに私のコードです:今

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」私は、このエラーが何を意味するか知っている

が定義されていない、それは解決策を見つけることに来るとき、それはちょうど私が壁にヒットしましたですそれは私のために働き、理解するために博士号を必要としません。

私が求めているのは、誰かが私にこのために役立つ解決策を与えることができ、それをうまく説明できるかどうかです。

ありがとうございます。

EDIT:その後、 だから、構文エラーを修正した後、私は何をしようとしている見つけることは動作しません、どのように私はこれについて行くでしょうか?

代わりにラベルを使用できますか?それとももっと良い方法がありますか? もう一度おねがいします!

答えて

1

StringVartkを介してアクセスする必要があります

v = tk.StringVar() 

別のノートで、tk.Text.inserttextvariableパラメータを取らないので、以下は動作しません。

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経由でアクセスしようとは考えていませんでした。 2番目の部分については、テキスト変数はどのように機能しますか?私は多くのオンラインを見つけることができなかった、別の質問をして申し訳ありません! –

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

私はファイル全体を投稿しようとしましたが、フォーマットは混乱していました。 –

関連する問題