Как заменить ярлык tkinter на новый? - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь написать довольно простую программу, которая преобразует число в двоичное с использованием tkinter GUI. Проблема, с которой я сталкиваюсь, заключается в том, что когда я ввожу большое число (например, 1000), а затем ввожу меньшее число (например, 2) и нажимаю «Отправить», новый вывод просто отображается в середине старого. С примерами, которые я использовал, это выглядит примерно так: «1000 i 2 в двоичном виде - это 10 01000»

Как я могу полностью удалить старую метку перед отображением новой?

from tkinter import *

win = Tk()

def compute_binary():
    user_num = binary_entry.get()
    user_num = int(user_num)
    binary_equivalent = ("{:b}".format(user_num))
    binary_output = StringVar()
    binary_output.set(str(user_num) + " in binary is " + binary_equivalent)
    binary_label = Label(win, textvariable = binary_output)
    binary_label.grid(row = 1, column = 1)

win.title("Number to Binary Converter")

win.geometry("450x75")

input_request = Label(win, text = "Input a number to\nconvert to binary:")
input_request.grid(row = 0, column = 0)

binary_entry = Entry(win)
binary_entry.grid(row = 0, column = 1)

entry_confirm = Button(win, text = "Submit", command = compute_binary)
entry_confirm.grid(row=0, column = 2)

win.mainloop()

1 Ответ

2 голосов
/ 19 февраля 2020

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

Вам необходимо создать метку результата один раз и обновлять ее в каждой конверсии:

from tkinter import *

win = Tk()

def compute_binary():
    user_num = binary_entry.get()
    user_num = int(user_num)
    binary_equivalent = ("{:b}".format(user_num))
    binary_output.set("{} in binary is {}".format(user_num, binary_equivalent))

win.title("Number to Binary Converter")

win.geometry("450x75")

input_request = Label(win, text="Input a number to\nconvert to binary:")
input_request.grid(row=0, column=0)

binary_entry = Entry(win)
binary_entry.grid(row=0, column=1)

entry_confirm = Button(win, text="Submit", command=compute_binary)
entry_confirm.grid(row=0, column=2)

binary_output = StringVar()
binary_label = Label(win, textvariable=binary_output)
binary_label.grid(row=1, column=0, columnspan=3)

win.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...