这是代码
from tkinter import*
def final_calculation():
entryField.delete(0,'end')
Wood = entryWood.get()
Steal = entrySteal.get()
output_wood = (Wood *wood_c02)
output_steal = (Steal * steal_c02 )
final = (output_steal + output_wood *c02_coal)
entry.set(final)
steal_c02 = int (5.5)
wood_c02 = int (1.2)
c02_coal = int (0.94)
root = Tk()
root.configure(background="black")
root.title("C02 caculator")
root.resizable(1,0)
root.columnconfigure(0,weight=1)
root.columnconfigure(1,weight=1)
entry = StringVar()
entryField = Entry(root, textvariable=entry,background="white",foreground="black",justify=CENTER)
entryField.grid(row=0,column=0,columnspan=2,sticky=W+E)
entryField.columnconfigure(0,weight=1)
labelWood = Label(root, text="Amount of wood",background="black",foreground="grey90")
labelWood.grid(row=1,column=0, sticky=E)
labelSteal = Label(root, text="Amount of steal",background="black",foreground="grey90")
labelSteal.grid(row=2,column=0, sticky=E)
entryWood = Entry(root,background="grey80",foreground="black")
entryWood.grid(row=1,column=1,sticky=W)
entrySteal = Entry(root,background="grey80",foreground="black")
entrySteal.grid(row=2,column=1,sticky=W)
button = Button(root, text="caculate C02", command= final_calculation)
button.grid(row=3, columnspan=2)
root.mainloop()
按运行,一切都很好。在计算问题中重新解决的总和(即第二个输入重复 5 次并显示为输出)之前,任何帮助都会很有帮助。
亲切的问候:49.95
最佳答案
您混淆了数据类型。让我们看一下您的代码。
在这里,您将十进制数转换为int
。整数是四舍五入的数字(例如 0、1、2、3、4...)。当您执行 int(5.5)
时,您基本上会删除小数点后面的所有信息:
steal_c02 = int (5.5) # = 5
wood_c02 = int (1.2) # = 1
c02_coal = int (0.94) # = 0
您从 Entry 小部件中获得的是字符串对象。尽管它们可能包含数字,但它们被视为文本,而不是数字。
例如
Wood = entryWood.get() # Wood = '10'
Steal = entrySteal.get() # Steal = '1.5'
output_wood = (Wood *wood_c02)
因为 Wood = '10'
和 wood_c02 = 1
,您将字符串与整数相乘。这有效,但没有达到您的预期。当你在Python中执行'a'*5
时,你会得到'aaaaa'
。因此,在本例中,Wood *wood_c02
是 '10'*1
,即 '10'
output_steal = (Steal * steal_c02 )
此处 Steal = '1.5'
和 steal_c02 = 5
并且同样适用:Steal *steal_c02
是 '1.5'* 5
即'1.51.51.51.51.5'
final = (output_steal + output_wood *c02_coal)
此处,output_steal = '1.51.51.51.51.5'
、output_wood = '10'
和 c02_coal = 0
。 '10'*0 = ''
和 '1.51.51.51.51.5' + '' = '1.51.51.51.51.5'
,您将其放入 final
.
您想用数字而不是字符串进行计算,因此您应该将输入内容转换为数字(请记住,如果输入无法转换为数字,则此操作将会失败)
Wood = float(entryWood.get())
Steal = float(entrySteal.get())
您还希望 steal_c02
、wood_c02
和 c02_coal
为十进制数,因此不要将它们转换为整数:
steal_c02 = 5.5
wood_c02 = 1.2
c02_coal = 0.94
关于python - python tkinter "calculator"的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51379449/