我想制作计算天然气价格的程序,但我的代码出错了。
from tkinter import *
root = Tk()
ment = StringVar()
root.geometry('450x450+500+300')
root.title('ბენზმთვლელი')
mlabel2 = Label(root, text='რეგულარი >> '+2.23+ 'GEL').pack()
mlabel3 = Label(root , text = 'ევრო რეგულარი >> '+2.29+' GEL').pack()
mlabel4 = Label(root, text="პრემიუმი >> " + 3.35 + " GEL").pack()
mlabel5 = Label(root, text='დიზელი >> ' + 2.25 + ' GEL').pack()
mlabel6 = Label(root, text='ევრო დიზელი >> '+2.33+' GEL').pack()
mlabel1 = Label(root, text="მიუთითეთ ბენზინის რაოდენობა(ლიტრებში)").pack()
mentry1 = Entry().pack()
mlabel7 = Label(root, text="მიუთითეთ ბენზინის დასახელება(ზემოთ ჩამოთვლილთაგან)").pack()
mentry2 = Entry().pack()
def gamotvla():
if mlabel7 == mlabel3 or mlabel2 or mlabel4 or mlabel5 or mlabel6:
print(mlabel1*mlabel7)
else:
print('რაღაც შეიყვანე შეცდომით!!')
mbutton = Button(root, text='გამოთვლა',fg="red",bg='black', command=gamotvla).pack()
root.mainloop()
错误:
Traceback (most recent call last):
File "/home/zura12337/Desktop/Python/Atom/tk.py", line 11, in <module>
mlabel2 = Label(root, text='რეგულარი >> '+2.23+ 'GEL').pack()
TypeError: cannot concatenate 'str' and 'float' objects
你能帮助我吗?
答案 0 :(得分:3)
这一行足以引起问题:
text='რეგულარი >> '+2.23+ 'GEL'
2.23
是一个浮点值; 'GEL'
是一个字符串。添加算术值和字母串是什么意思?
如果你想要字符串标签'რეგულარი >> 2.23 GEL'
,那就这样写吧。如果要从部件构造它,则将值转换为string:
text = 'რეგულარი >> ' + str(2.23) + 'GEL'
答案 1 :(得分:0)
让我们看看有问题的一行,并找出一些问题。 这是一行:
mlabel2 = Label(root, text='რეგულარი >> '+2.23+ 'GEL').pack()
您正在连接字符串,浮点数和另一个字符串。解决这个问题的最简单方法是使用一些字符串格式表达式,例如
mlabel2 = Label(root, text='რეგულარი >> {num} GEL'.format(num=2.23))
对于Python 3代码来说,这将是一个很好的解决方案......请注意{num}
是一个格式化命令,可以用浮点数替换。还有其他方法可以解决这个问题,但是由于你使用的是Python 3,我会选择那个。此外,由于不同标签中的数字会发生变化,因此我将其分开,以便于使用。
此外,请记住,您的 mlabel2 将在您的代码中 None ,因为.pack()
命令会返回无。如果你想保留 mlabel2 ,你必须将声明分成两部分......
mlabel2 = Label(root, .... GEL')
mlabel2.pack()
大多数小部件都是如此,包括标签,条目和按钮。 if
中的def gamotvla():
声明也会给您带来问题,但让我们从这些声明开始。