鱼C论坛

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

[已解决]关于tkinter中,enter组件的疑问

[复制链接]
发表于 2017-7-18 15:53:24 | 显示全部楼层 |阅读模式

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

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

x
QQ图片20170718154409.png

如上图所示,是在编写一个小甲鱼老师视频中讲的 计算器的程序。

现在有下面2个问题:

(1)现在的程序是,除数字外的其他字符串不能输入到对话框,我想改为允许输入小数(实际上这也是计算器的要求)比如2.5之类,def test(content)这个函数应该如何修改呢?

(2)文本框输入数字后,如果想要修改,是删不掉输入的第一位数字的,为什么?怎么修改呢?
谢谢各位大神了。

  1. from tkinter import *

  2. master = Tk()

  3. frame = LabelFrame(master,text='加法计算器',padx =5,pady = 5)
  4. frame.pack(padx=1,pady = 10)

  5. v1=StringVar()
  6. v2=StringVar()
  7. v3=StringVar()

  8. def test(content):
  9.         return content.isdigit()
  10. testCMD = frame.register(test)

  11. e1 = Entry (frame,width=10,textvariable=v1,validate='key',validatecommand=(testCMD,'%P')).grid(row=0,column=0)
  12. Label(frame,text='+').grid(row=0,column=1)
  13. e2 = Entry (frame,width=10,textvariable=v2,validate='key',validatecommand=(testCMD,'%P')).grid(row=0,column=2)
  14. Label(frame,text='=').grid(row=0,column=3)
  15. e3 = Entry (frame,width=10,state='readonly',textvariable=v3).grid(row=0,column=4)

  16. def calc():
  17.         result = float(v1.get())+float(v2.get())
  18.         v3.set(result)

  19. Button(frame,width=10,text='计算结果',command=calc).grid(row=1,column=2,pady=10)

  20. mainloop()
复制代码



最佳答案
2017-7-18 17:09:12
  1. def test(content):
  2.     if len(content)==0: return True
  3.     return content[-1]=='.' or content[-1].isdigit()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-18 17:09:12 | 显示全部楼层    本楼为最佳答案   
  1. def test(content):
  2.     if len(content)==0: return True
  3.     return content[-1]=='.' or content[-1].isdigit()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-18 20:15:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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