问题描述
我刚刚制作了一个无形的atm应用程序。没什么花哨的,您基本上可以创建一个有金额的帐户,也可以退出。我正在尝试解决值错误,以防用户在Tkinter教科书中输入字母而不是整数。
我做了try catch语句,但是它仍然抛出Value错误。
def get_selected_row(event):
try:
global selected_tuple
index = list1.curselection()[0]
selected_tuple= list1.get(index)
e1.delete(0,END)
e1.insert(END,selected_tuple[1])
e2.delete(0,END)
e2.insert(END,selected_tuple[2])
e3.delete(0,END)
e3.insert(END,selected_tuple[3])
e4.delete(0,END)
e4.insert(END,selected_tuple[4])
except ValueError:
pass
def acct_details ():
global balance
list1.delete(0,END)
list1.insert(END,("Hello",acct_name.get()))
list1.insert(END,("your account number is ",acct_number.get()))
list1.insert(END,("and your balance is",balance))
def clear():
list1.delete(0,END)
e1.delete(0,END)
e2.delete(0,END)
e3.delete(0,END)
def withdraw_fxn(amount):
list1.delete(0,END)
try:
global balance
if balance < amount:
list1.insert(END,('Sorry,you have an insufficient Balance'))
else:
balance = balance - amount
list1.insert(END,(acct_name.get(),"Your new balance is ",balance))
except ValueError:
pass
def deposit_fxn(amount):
list1.delete(0,END)
global balance
try:
balance += amount
list1.insert(END,"your new balance is ",balance))
except ValueError:
pass
解决方法
您正在捕获IndexError,要捕获ValueError您必须添加
new_a = []
for i in a:
if i is not 'NoneType':
new_a.append(i)
,
如果在用户输入字母的情况下不会捕获Value错误,则可以尝试在输入详细信息之后使用if条件,并使用isalpha()
方法检查是否输入了任何字母,如果是,您可以告诉用户,但不接受该输入。