|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
35讲easygui的课后作业改成用tkinter来实现,写了一个验证输入有效性的函数,但发现验证结果没有按照预期进行
在输入符合要求的数字后,按BackSpace删除第一个数字时,会返回False,在这之后不管输入什么,entry组件都不再有验证功能
我并不希望删除之前的数字更换为新数字时报错,是否有好的解决办法?之后不再进行数据验证的原因是什么?
- from tkinter import *
- import tkinter.messagebox
- import random
- secret = random.randint(1,10)
- root = Tk()
- root.title('数字小游戏')
- def test(content):
- if not content.isdigit():
- tkinter.messagebox.showerror(message='请输入数字!')
- print('1')
- return False
- elif int(content)>10 or int(content)<1:
- tkinter.messagebox.showerror(message='请输入1-10的数字!')
- print('2')
- return False
- else:
- print('3')
- return True
- def speculate():
- if int(guess.get()) == secret:
- tkinter.messagebox.showinfo(message='正确!数字为:'+str(secret))
- else:
- if int(guess.get()) > secret:
- tkinter.messagebox.showinfo(message='大了')
- else:
- tkinter.messagebox.showinfo(message='小了')
- def clearAll():
- e1.delete(0,END)
- Label(root, text='不妨猜下 小甲鱼现在心里想的是哪个数字(1-10):').grid(row=0, column=0,columnspan=2, padx=5,pady=5)
- guess = StringVar()
- testCMD = root.register(test)
- e1 = Entry(root, textvariable=guess, validate='key', validatecommand=(testCMD, '%P'), invalidcommand=clearAll, width=50)
- e1.grid(row=1,column=0,columnspan=2,padx=10,pady=10)
- Button(root, text='OK', command=speculate).grid(row=2, column=0)
- Button(root, text='Cancel').grid (row=2, column=1,padx=5,pady=5)
- root.mainloop()
复制代码 |
-
-
|