在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币,还希望大神能帮忙解决下,小弟在此先行感谢