鱼C论坛

 找回密码
 立即注册
查看: 3078|回复: 2

有木有热心鱼油,Python GUI Entry输入框无法实现delete函数

[复制链接]
发表于 2016-3-16 16:54:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 青山极品小白 于 2016-3-16 16:56 编辑
  1. from tkinter import *

  2. root = Tk()


  3. def entry_test(content) :
  4.     return content.isdigit()#验证是否为数字的函数



  5. entry_testCMD = root.register(entry_test)

  6. #输入框
  7. en = Entry (root, font =('Verdana',18) ,\
  8.             validatecommand = (entry_testCMD , "%P") , validate = "key")
  9. en.pack()

  10. #清除输入框函数 ,第二个参数不为END时可以正常删除文本
  11. def clear() :
  12.     en.delete(0,END)


  13. #按钮
  14. but = Button (root,text='clear',command = clear)
  15. but.pack()
  16. mainloop()
复制代码


做了一个简单的验证输入框和清除输入框内容的按钮的窗体,当delete()函数第二个参数为END时不能
清空输入框,有大神解救小白吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 18:52:42 | 显示全部楼层
1.因为你用的是“%P”,当delete()时,触发验证,delete(0,END)文本内容成了空,也就是False,即输入不合法,文本内容因此不改变(类似你输入字母时字母并不会加入到文本中)
当en.delete(0,END)将第二个参数改成非END,比如4,会发生下面的情况:
a.当前文本内容小于等于4时,会无法删除
b.当前文本内容多于4时可以删除,因为删除后内容不为空,为True

2.可以将%P ,改成i 或者其他试试下。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-3-16 20:24:02 | 显示全部楼层
小小大鱼 发表于 2016-3-16 18:52
1.因为你用的是“%P”,当delete()时,触发验证,delete(0,END)文本内容成了空,也就是False,即输入不合法 ...

已经解决,灰常感谢!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-20 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表