亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Tkinter 回調 Traceback 錯誤中的異常。如何處理

Tkinter 回調 Traceback 錯誤中的異常。如何處理

慕容3067478 2022-06-22 17:49:20
這是一個使用 tkinter gui 添加 2 個數字的小型 Python 程序。如果文本字段中有一些輸入,它運行良好。如果輸入為空白或數字以外的字符,如何處理導致的錯誤。from tkinter import *root = Tk()class addtwo:    def evaluate(self, master, label, a, b):        label.configure(text="The result is" + str(a+b))    def __init__(self, master):        frame = Frame(master, width=300, height=200)        button1 = Button(master, text="Sum")        input1 = Entry(master, text="Text1")        input2 = Entry(master, text="Text2")        label = Label(master, text="")        button1.bind("<Button-1>", lambda event: self.evaluate(master, label,int(input1.get()),int(input2.get()) ))        input1.pack()        input2.pack()        frame.focus()        button1.pack()        label.pack()        frame.pack()addtwo(root)   root.mainloop()錯誤:Exception in Tkinter callbackTraceback (most recent call last):  File "/usr/lib/python3.5/tkinter/__init__.py", line 1553, in __call__    return self.func(*args)  File "/home/temporary/PycharmProjects/practise/addtwo.py", line 21, in <lambda>    button1.bind("<Button-1>", lambda event: self.evaluate(master, label,int(input1.get()),int(input2.get()) ))ValueError: invalid literal for int() with base 10: ''
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

您可以使用try/except捕獲錯誤并顯示一些消息Label而不是結果。


import tkinter as tk


class AddTwo:


    def __init__(self, master):

        frame = tk.Frame(master, width=300, height=200)


        self.input1 = tk.Entry(master, text="Text1")

        self.input2 = tk.Entry(master, text="Text2")

        button1 = tk.Button(master, text="Sum", command=self.evaluate)

        self.label = tk.Label(master, text="")


        self.input1.pack()

        self.input2.pack()

        button1.pack()

        self.label.pack()

        frame.pack()

        frame.focus()


    def evaluate(self):

        a_str = self.input1.get()

        b_str = self.input2.get()

        try:

            a = int(a_str)

            b = int(b_str)

        except ValueError:

            self.label['text'] = "Wrong value(s) {} and/or {}".format(a_str, b_str)

            return


        self.label['text'] = "The result is {}".format(a+b)


# --- main ---


root = tk.Tk()

AddTwo(root)

root.mainloop()


查看完整回答
反對 回復 2022-06-22
  • 1 回答
  • 0 關注
  • 433 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號