Как очистить вывод (не терминал) , но в графическом интерфейсе

#python #tkinter

Вопрос:

Очень новичок в python, я писал сценарий конвертера фунтов в кг и хочу знать, как очистить вывод после получения ответа, в основном всякий раз, когда я нажимаю кнопку преобразования, он продолжает выдавать вывод и будет продолжать расширять окно.

 def to_kg(): kg=float(entry1.get())/2.0462 labelanswer=tk.Label(root, text=(kg), bg='teal') labelanswer.place(x=45,y=45) labelanswer.pack()     import tkinter as tk from tkinter.constants import BOTTOM from typing import Text  root=tk.Tk()  root.resizable(False, False)  root.title('Pounds to Kilograms')  canvas=tk.Canvas(root, height=150, width=200, bg='teal')  frame=tk.Frame(root, bg='white') frame.place(relwidth=0.8, relheight=0.8, relx=0.1 rely=0.1)  entry1=tk.Entry(root) canvas.create_window(200, 200, window=entry1) entry1.place(x=40, y=50)  def to_kg():  kg=float(entry1.get())/2.205  labelanswer=tk.Label(root, text=(kg), bg='teal')  labelanswer.place(x=45,y=45)  labelanswer.pack()  labeltext=tk.Label(root, text='lbs to kg', bg='white')  button1=tk.Button(root, text="convert", command=to_kg)  button1.pack(side=BOTTOM) canvas.pack() frame.pack()  root.mainloop()  

Пример1 Пример2

Комментарии:

1. Вы запускаете это в каком-то цикле?

2. @RonBeyer Я не запускаю это в цикле

Ответ №1:

Вы создаете новую метку при каждом нажатии кнопки. Это создаст новую метку, как на вашем скриншоте. Вместо создания новой метки вам следует изменить метку ответа. Итак, есть только один answerlabel .

Вот рабочее решение.

 import tkinter as tk from tkinter.constants import BOTTOM from typing import Text  root=tk.Tk()  root.resizable(False, False)  root.title('Pounds to Kilograms')  canvas=tk.Canvas(root, height=150, width=200, bg='teal')  frame=tk.Frame(root, bg='white') frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)  entry1=tk.Entry(root) canvas.create_window(200, 200, window=entry1) entry1.place(x=40, y=50)  labelanswer=tk.Label(root, bg='teal') labelanswer.place(x=45,y=45)  def to_kg():  kg=float(entry1.get())/2.205  labelanswer['text'] = kg  labeltext=tk.Label(root, text='lbs to kg', bg='white')  button1=tk.Button(root, text="convert", command=to_kg)  button1.pack(side=BOTTOM) canvas.pack() labelanswer.pack() frame.pack()  root.mainloop()  

строка labelanswer['text'] = kg — это способ изменить метку вашего ответа.