【问题标题】:Update text on a tkinter window [duplicate]更新 tkinter 窗口上的文本 [重复]
【发布时间】:2017-07-30 08:18:55
【问题描述】:

我将如何制作它以便我可以在已经打开的 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()

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    如果不更新现有小部件或替换小部件,我看不到更改文本的方法。

    但是您可以获取之前的文本来附加新的文本,如下例所示,使用方法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()
    

    甚至直接使用快捷方式:

    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()
    

    【讨论】:

    • 有没有办法做到这一点,一旦显示小部件,您仍然可以更改文本?现在是否替换之前的文本并不重要。
    • @Daniel 你的意思是用户是否可以更改文本?
    • 那种。所以小部件已显示,但我希望它可以更改小部件上的文本而无需关闭小部件创建第二个小部件
    • @Daniel 你需要在你的类中定义方法来做到这一点,如果你这样做了,你不能在 mainloop() 之后调用这个方法。我更新了示例
    • 你介意告诉我怎么做吗?我对 tkinter 很陌生,并且没有太多的课程经验......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2014-10-28
    • 2020-04-02
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多