2017-07-30 15 views
0

私は以前のテキストを削除したり、以前のテキストを新しいテキストに置き換えたりせずに、すでに開いているtkinterウィンドウにさらにテキストを追加することはできますか?ここでtkinterウィンドウのテキストを更新する

は、これまでの私のコードです:

def display_text(): 
    class SampleApp(tk.Tk): 

     def __init__(self): 
      tk.Tk.__init__(self) 
      self.label = tk.Label(self, text='Enter text') 
      self.label.pack(side = 'top', pady = 5) 


     def on_button(self):z 
      self.destroy() 


    w = SampleApp() 
    w.resizable(width=True, height=True) 
    w.geometry('{}x{}'.format(100, 90)) 
    w.mainloop() 


display_text() 

答えて

3

私は既存の更新やウィジェットを交換せずにテキストを変更する方法を参照することはできません。

しかし、あなたは、ウィジェット更新する方法config()を使用して、以下の例のように、新しいものを追加する前のテキストを取得することができます:

w = SampleApp() 
w.resizable(width=True, height=True) 
w.geometry('{}x{}'.format(100, 90)) 
w.label.config(text=w.label['text']+'\nnew text') 
w.mainloop() 

あるいは直接shorcut:

w.label['text'] += '\nnew text' 

ところで、クラス内の関数を混在させるべきではありません。最初にクラスを定義してからインスタンス化し、mainloop()メソッドを呼び出してルートウィジェットを表示する方がよいでしょう。


編集:ここではボタン

import tkinter as tk 

class SampleApp(tk.Tk): 

    def __init__(self): 
     tk.Tk.__init__(self) 
     self.label = tk.Label(self, text='Enter text') 
     self.label.pack(side = 'top', pady = 5) 
     self.button = tk.Button(self, text='update', command=self.on_button) 
     self.button.pack() 

    def on_button(self): 
     self.label['text'] +='\nNew New Text' 


w = SampleApp() 
w.resizable(width=True, height=True) 
w.geometry('{}x{}'.format(100, 90)) 
w.label.config(text=w.label['text']+'\nnew text') 
w.mainloop() 
+0

へのクラス・バインドの方法にテキストを更新する方法は、ウィジェットが表示されたら、それはあなたがまだすることができ行う方法があるありますテキストを変更しますか?今のところ前のテキストを置き換えるかどうかは重要です。 – Daniel

+0

@Danielとは、ユーザーがテキストを変更できるかどうかを意味しますか? – PRMoureu

+0

種類です。ウィジェットは表示されましたが、ウィジェットを閉じることなくウィジェットのテキストが変わりますので、2番目のウィジェットを作成してください。 – Daniel

関連する問題