更新tkinter窗口上的文本

时间:2017-07-30 08:18:55

标签: python python-3.x 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()

1 个答案:

答案 0 :(得分: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()