如何用新的替换tkinter标签?

问题描述 投票:0回答:1

我正在尝试编写一个相当简单的程序,该程序使用tkinter GUI将数字转换为二进制。我遇到的问题是,当我输入一个较大的数字(例如1000),然后输入一个较小的数字(例如2)并单击Submit(提交)时,新的输出仅显示在旧的中间。在我使用的示例中,它看起来像“二进制中的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()
python tkinter replace label
1个回答
0
投票

您在每次转换中为结果重新创建新标签,并且新标签覆盖在先前标签的顶部。

您需要创建一次结果标签,并在每次转化中对其进行更新:

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()
© www.soinside.com 2019 - 2024. All rights reserved.