Tkinter的?将字符串转换为整数出错?

时间:2013-11-23 23:12:32

标签: python tkinter

我是tkinter的新手。我正在尝试制作货币转换器但是当我尝试将条目转换为浮动(转换为不同的货币)时,我收到此错误。

Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
return self.func(*args)
File "C:\Users\Nathan\Documents\New folder (3)\converter.py", line 40, in convert
money = float( money.get() )
ValueError: could not convert string to float: 

这是我的代码:     import tkinter     来自tkinter import *

root=tkinter.Tk()
root.title('Currency Converter')
root.minsize(300,300)
root.geometry('500x500')


def convert():
nw= Toplevel()
nw.title('Convert')
nw.minsize(300,300)
nw.geometry('400x400')
am= Label(nw,text='Please enter the amount of money you have')
money= Entry(nw, width=5)
ra= Label(nw, text='Please enter the exchange rate')
rate= Entry(nw,width=6)
convert= Label(nw,text='You have')
con= tkinter.Button(nw, text='Convert')
b= tkinter.Button(nw, text= str(money))
am.pack()
money.pack()
ra.pack()
rate.pack()
convert.pack()
con.pack()
b.pack()
money = float( money.get() )



welcome= Label(root,text='Welcome to Currency Converter, please select the conversion you wish to              use')
pe= tkinter.Button(root, text='Pound - Euro', command=convert)
ep= tkinter.Button(root, text='Euro - Pound', command=convert)

welcome.pack()
pe.pack()
ep.pack()
root.mainloop()

1 个答案:

答案 0 :(得分:1)

我认为解释为什么会出现此问题的最佳方法是逐步完成所发生的事情:

  1. 主窗口已建成。
  2. 用户点击pe按钮或ep按钮。
  3. 调用每个按钮连接的convert函数。
  4. 该功能贯穿此行:money = float( money.get() )
  5. 由于用户尚未输入任何内容,money.get()将返回一个空字符串。空字符串不能成为浮点数,因此抛出ValueError
  6. 总而言之,问题是你没有添加任何安全性,如果money.get返回一个无法转换为浮点数的字符串(即一个空字符串,一个包含字母的字符串,等等)。 )。


    你可以创建一个像这样的安全:

    try:
        money = float(money.get())
    except ValueError:
        pass
    

    或者,像这样:

    money = money.get()
    if money.isdigit():
        money = float(money)
    

    无论您如何选择解决此问题,都需要在money.get的返回值无法转换为浮点数时执行某些