Вот рабочая версия, есть несколько изменений:
import tkinter
from tkinter import ttk
UNITS = ('mm', 'cm', 'inches','feet', 'yards', 'meter', 'km', 'miles')
window = tkinter.Tk()
window.title("Conversion Unit")
labelOne = ttk.Label(window,text='Enter Value')
labelOne.grid(row=0,column=0)
to_be_converted = ttk.Combobox(values=UNITS, width=10)
to_be_converted.grid(row=0, column=2)
labelTwo = ttk.Label(window, text="Equivalent to")
labelTwo.grid(row=1,column=1)
converted = ttk.Combobox(values=UNITS, width=10)
converted.grid(row=1, column=2)
userName = tkinter.DoubleVar()
userEntry = ttk.Entry(window, width=5, textvariable = userName)
userEntry.grid(row=0, column=1)
def convert():
if to_be_converted.get() == 'km' and converted.get() == 'meter':
labelTwo.configure(text='Value is equivalent to:' + str(userName.get()*1000))
btn = ttk.Button(window, text='Convert!', command=convert)
btn.grid(row=0, column=4)
window.mainloop()
.grid () возвращает None
Итак, эта строка:
to_be_converted = ttk.Combobox(values=UNITS, width=10).grid(row=0, column=2 )
Должно быть:
to_be_converted = ttk.Combobox(values=UNITS, width=10)
to_be_converted.grid(row=0, column=2)
(то же самое с converted
)
.get
- это связанный метод, а не атрибут
Таким образом, эта строка:
if to_be_converted.get == 'km' and converted.get == 'meter':
должна быть:
if to_be_converted.get() == 'km' and converted.get() == 'meter':
(и «m» следует заменить на «метр» - или UNITS
долженесть «m», а не «метр»).
Невозможно объединить строку с плавающей точкой
Итак, эта строка:
labelTwo.configure(text='Value is equivalent to:' + userName.get()*1000)
Имеетбыть, например:
labelTwo.configure(text='Value is equivalent to:' + str(userName.get()*1000))