如果我输入一个整数,我将无效。如果它不是数字0或更大,我希望它无效。任何帮助非常感谢!
from Tkinter import *
import tkMessageBox
from Tkinter import *
import tkMessageBox
class MyApp(object):
def __init__(self):
self.root = Tk()
self.root.wm_title("Question 7")
self.label = Label(self.root, text="Enter weight in pounds",
font=('Calibri', 50))
self.label.pack(padx=20,pady=10)
self.labeltext = StringVar()
self.labeltext.set("")
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.root.mainloop()
def entry_changed(self, a, b, c):
s = self.entrytext.get()
try:
a=int(s)*4.3
self.labeltext.set(a)
答案 0 :(得分:0)
问题是第一个布尔条件。条件是评估为真
>>> 'Not A Number' >= 0
True
但是,当它转换为整数时,它会失败:
>>> int('Not A Number')
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
int('Not A Number')
ValueError: invalid literal for int() with base 10: 'Not A Number'
请尝试使用此功能,以便正确捕获和管理正在引起的异常:
def entry_changed(self, a, b, c):
s = self.entrytext.get()
try:
a=int(s)*4.3
self.labeltext.set(a)
except:
if s=="":
self.labeltext.set("")
else:
self.labeltext.set("invalid")
请注意,当用户输入浮动eg. 4.3
时,它也会生成异常,因此您可能也想要更正它。