#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. @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
— это способ изменить метку вашего ответа.