我正在尝试创建一个计算器程序,它可以让你估计出你每年花在汽油上的钱。为了能够运行程序,我需要运行一个算法,该算法从自旋框中获取信息(以int形式)。当我尝试运行代码时,它告诉我不能将非字符串(Int)乘以字符串。如何更改数字显示框以接收整数形式的信息,而不是字符串。任何帮助都是非常感谢的:
var = IntVar()
canvas = Canvas(tk, width=400, height=335)
canvas.pack()
def selection():
sel = "Price: " + int(scale.get() * w.get() * s.get() / 100)
label.config(text=sel)
label1 = Label(tk, text="Current Gas Price($/l)")
label1.place(relx=0.25, rely=0.3, anchor=CENTER)
w = Spinbox(tk, from_=0, to=1, width=5)
w.place(relx=0.58, rely=0.3, anchor=CENTER)
s = Spinbox(tk, from_=1, to=99, width=5)
label45 = Label(tk, text=".")
label45.place(relx=0.705, rely=0.3, anchor=CENTER)
s.place(relx=0.82, rely=0.3, anchor=CENTER)
label2 = Label(tk, text="Average Yearly Gas Cost", font=('Helvetica', 25))
label2.place(relx=0.5, rely=0.1, anchor=CENTER)
scale = Scale(tk, variable=var, from_=0, to=50000, resolution=500, orient=HORIZONTAL, length=250)
scale.place(relx=0.65, rely=0.45, anchor=CENTER)
label3 = Label(tk, text="Kilometre Range")
label3.place(relx=0.165, rely=0.47, anchor=CENTER)
label4 = Label(tk, text=" Highway Fuel efficency(l/100km)")
label4.place(relx=0.29, rely=0.65, anchor=CENTER)
E3 = Spinbox(tk, from_=5, to=17, width=5)
E3.place(relx=0.68, rely=0.65, anchor=CENTER)
label10 = Label(tk, text=".")
label10.place(relx=0.79, rely=0.65, anchor=CENTER)
E4 = Spinbox(tk, from_=0, to=10, width=5)
E4.place(relx=0.91, rely=0.65, anchor=CENTER)
B1 = Button(tk, text="Calculate", command=selection)
B1.place(relx=0.5, rely=0.8, anchor=CENTER)提前感谢
发布于 2017-03-20 06:12:18
您需要将sel更改为:
sel = "Price: " + str(float(scale.get()) * float(w.get()) * float(s.get()) / 100)它在乘法之前将scale.get()、w.get()和s.get()转换为floats。毕竟,您所做的是在str相乘后将其更改为int (这是不可能的)。
顺便说一句,不要给根命名为tk,因为当人们执行import tkinter as tk时,它可能会与tkinter混淆,这是很常见的。
https://stackoverflow.com/questions/42892733
复制相似问题