在Python的GUI(tkinter)中,使用for循环添加多给个Entry组件,如何能够对这多个组件在光标离开后(focusout)进行验证?

在Python的GUI(tkinter)中,使用for循环添加多给个Entry组件,如何能够对这多个组件在光标离开后(focusout)进行验证?
代码如下:

from tkinter import *
from tkinter import messagebox

B_number = []
def C():
    def row():
        obtain_number = row_number.get()            
        if obtain_number.isdigit():
            if eval(obtain_number) > 10:
                    messagebox.showinfo("提示","输入行数太多!,最多总计10行")
                    row_number.delete(0,END)
                    row_number.insert(0,"2")
            else:
                def judge_B(event):
                    if B.get().isdigit():
                        print("成功")
                    else:
                        messagebox.showerror("错误","重新输入")
                a = eval(obtain_number)+1
                for i in range(1,a):      
                    B = Entry(add)
                    B.bind("<FocusOut>",judge_B)
                    B_number.append(B)
                    B.grid(row = len(B_number)+1,column = 2)                    
        else:
            messagebox.showerror("错误","字符不合法,已修改为2!")
            row_number_ene.delete(0,END)
            row_number_ene.insert(0,"2")

    add = Tk()
    add.title("行业绿色制造分级判定系数")
    add.geometry("500x500")

    Label(add,text = "行数: ").grid(row = 0,column = 0,padx = 5,pady = 10)
    row_num = StringVar()
    row_num.set("2")
    row_number = Entry(add,textvariable = row_num,bg = "grey",width = 7,
                       justify = CENTER)
    row_number.grid(row =0,column = 1,pady = 10)

    Button(add,text = "增加多行",command = row).grid(row = 0,
                                        column = 2,pady = 10)
C()


存在问题,假设我添加两行,然后对每一行输入1,循环输入(即,第一行输入1-第二行输入1-第一行输入1-第二行输入1,第一行输入a,第二行输入a,第一行输入a,第二行 输入a,每次输入后,点上面行数 (避免多次点击))
输出结果依次为:
报错;(这里应该是成功才对)
成功;
成功;
成功;
成功;(这里应该报错才对)
报错;
报错;
报错
小弟没有C币,还希望大神能帮忙解决下,小弟在此先行感谢

1个回答

fanshinee
fanshinee 您好,这个我看了,但是不能解决我的问题啊
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问