2017-07-30 172 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

@丹尼你的意思是如果用户可以改变文字? – PRMoureu

+0

种。所以这个小部件已经显示出来了,但是我希望它可以在小部件上的文本发生变化而不必关闭这个小部件创建第二个小部件 – Daniel