0

こんにちは、文字列をフロートに変換するのに問題があります。bmiを計算できるように、入力テキストをフロートに変換しようとしています。

from Tkinter import *
import tkMessageBox

class MyApp(object):
    def __init__(self):
        self.root = Tk()
        self.root.wm_title("bmi!")
        self.label = Label(self.root, text="Enter your height in box one and weight in box two",
        font=('Helvetica', 20))
        self.label.pack(padx=20,pady=10)
        self.labeltext = StringVar()
        self.labeltext.set("Another nice label!")
        Label(self.root, textvariable=self.labeltext).pack()
        self.entrytext = StringVar()
        Entry(self.root, textvariable=self.entrytext).pack()
        self.entrytext.trace('w', self.entry_changed)
        self.entrytext2 = StringVar()
        Entry(self.root, textvariable=self.entrytext2).pack()
        self.entrytext2.trace('w', self.entry_changed)



        self.root.mainloop()

    def entry_changed(self, a, b, c):
        s = self.entrytext.get()
        b=self.entrytext2.get()
        a=getdouble(s)
        d=getdouble(b)
        c=(a/(d**2))*703
        self.labeltext.set(c)


MyApp()
4

2 に答える 2

1

結果を文字列に変換するために使用するのではfloat()なくgetdouble()、を使用してみます。str()

ValueError入力したテキストが数字でない場合に発生する例外も処理する必要があります。

def entry_changed(self, a, b, c):
    try:
        mass = float(self.entrytext.get())
        height = float(self.entrytext2.get())
    except ValueError:
        self.labeltext.set("--")
        return

    c = (mass/(height**2))*703
    self.labeltext.set(str(c))
于 2012-10-29T01:00:48.823 に答える