Как получить число с плавающей точкой во входном GUI - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок в python, пытаюсь сделать простое приложение-конвертер, но моя проблема в том, что я не могу понять, как решить км до м.Если я это выясню, я могу выяснить все остальное.Заранее спасибо!Вот мой код

import tkinter from tkinter import ttk

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=('mm', 'cm', 'inches', 'feet', 'yards', 'meter', 'km', 'miles'),
    width=10
).grid(row=0, column=2)

labelTwo=ttk.Label(window, text="Equivalent to") 
labelTwo.grid(row=1, column=1) 
converted=ttk.Combobox(
    values=('mm', 'cm', 'inches', 'feet', 'yards', 'meter', 'km', 'miles'),
    width=10
).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=='m':
        labelTwo.configure(text='Value is equivalent to:' + userName.get() * 1000) 
        btn=ttk.Button(window, text='Convert!', command=convert) 
        btn.grid(row=0, column=4)

window.mainloop()

1 Ответ

0 голосов
/ 11 декабря 2018

Вот рабочая версия, есть несколько изменений:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...