【发布时间】:2019-05-20 09:56:07
【问题描述】:
我编写了一个简单的 python 代码,用于输入用户的任意数字。如果输入其他任何内容,则会根据代码引发异常。我将输入的值类型转换为 int 只是为了检查它是否是整数。理想情况下,除了当我输入任何字母表时,应该引发异常并打印我给出的文本。但我仍然可以看到它没有被抓住。
但是,当我专门在 typecast 语句周围再添加一个 try-except 块时,它就可以工作了。
from tkinter import *
window = Tk()
window.geometry('400x400')
class hangman:
def __init__(self):
self.entry = ''
def clicked(self, label2):
label2.place(x=100, y=200)
while True:
try:
def get_value(event):
self.entry = e1.get()
self.entry = int(self.entry)
print(self.entry)
Label(window, text="Enter any number :").place(x=10, y=220)
e1 = Entry(window)
e1.place(x=10, y=240)
e1.bind('<Return>', get_value) #To get the value entered in the entry when Return is pressed.
print("Past bind1")
print(self.entry)
print("Past bind2")
break
except ValueError as e :
print("\n\tPlease Enter only Numbers!!")
obj1 = hangman()
label2 = Label(window, text="Start")
bt = Button(window, text="Play", command=lambda: obj1.clicked(label2))
bt.place(x=150, y=125)
window.mainloop()
我希望捕获异常并打印我的消息而不是标准异常错误。
【问题讨论】:
-
当我输入 asdf 时出现异常。 ValueError: int() 以 10 为底的无效文字:'asdf'
-
@ShubhamSharma :是的,我希望这个错误由我写的 except 块处理。
-
是的,它正在我的电脑上运行并给我执行消息。
-
您需要查看终端以获取异常消息。不在 UI 屏幕上。
-
是的,在终端屏幕上获取异常。虽然我期待消息:“请仅输入数字!”
标签: python-3.x exception tkinter