如何让Tkinter GUI不替换字符串?

2024-09-30 04:36:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我当时正在用Python(使用Tkinter)编写一个代码,我无法解决一个小问题。这是我的密码:

from tkinter import *

def show_entry_fields():
    straal = int(e1.get())
    area = 3.143 * (straal * straal)
    area_label['text'] = str(area)

master = Tk()
Label(master, text="Straal").grid(row=0)
e1 = Entry(master)
e1.grid(row=0, column=1)

area_label = Label(master, text="Oppervlakte")
area_label.grid(row=2)

Button(master, text='Sluit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Bereken oppervlakte', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)

mainloop()

当我运行这个程序时,它确实工作了,但是如果它计算面积,那么文本“oppervlakte”就会被答案替换。在计算之前: http://imgur.com/zw7wA6D

计算之后:http://imgur.com/RV94QTw

如何让GUI显示:

电话:78.5749999999

提前谢谢


Tags: textmasterfieldsshowcolumnbuttonarealabel
2条回答

你可以改变这个:

area_label['text'] = str(area)

对此:

area_label['text'] = "Oppervlakte: {}".format(area)

如果不想复制“Oppervlakte”文本,则需要创建两个标签,一个用于“Oppervlakte”,另一个(可能最初为空)用于保存实际数字。你知道吗

您正在替换现有函数中的标签:area_label['text']=str(area)如果不创建新标签,请创建一个没有文本的新标签,然后将其填充到函数中:

from tkinter import *

def show_entry_fields():
    straal = int(e1.get())
    area = 3.143 * (straal * straal)
    calculation_label['text'] = str(area)    #using new label

master = Tk()
Label(master, text="Straal").grid(row=0)
e1 = Entry(master)
e1.grid(row=0, column=1)

area_label = Label(master, text="Oppervlakte")
area_label.grid(row=2)
calculation_label = Label(master, text="")    #new label
calculation_label.grid(row=2, column=1)

Button(master, text='Sluit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Bereken oppervlakte', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)

mainloop()

相关问题 更多 >

    热门问题