鱼C论坛

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

[已解决]哪位大佬帮我看看我的tkinter代码哪里出了问题

[复制链接]
发表于 2021-7-14 12:10:20 | 显示全部楼层 |阅读模式

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

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

x
67课中tkinter4 中小甲鱼讲了一个做简单计算器的代码,我基本就是按照课上的代码抄的,可编译后,出来的计算器,第二个加数的Entry框无法输入任何数字或字符,但第一个加数的Entry框却一切正常,这两个Entry框的代码是复制粘贴的,编译过程中也没有出现警示或错误,检查了几遍,也跟小甲鱼的原代码对了好几遍,没出入。头发都被抓掉了几根了,求各位大佬帮忙看看哪里的问题
#简单的计算器

from tkinter import *

master = Tk()

v1 = StringVar()
v2 = StringVar()
v3 = StringVar()

def test(content):
    return content.isdigit()

testCMD = master.register(test)

e1 = Entry(master, textvariable=v1, validate='key', \
           validatecommand=(testCMD, '%P'))\
           .grid(row=0, column=0)

Label(master, text='+').grid(row=0, column=1)

e2 = Entry(master, textvariable=v2, validate='key', \
           validatecommand=(testCMD, '%p'))\
           .grid(row=0, column=2)

Label(master, text='=').grid(row=0, column=3)

e3 = Entry(master, textvariable=v3, state='readonly')\
     .grid(row=0, column=4)

def calc():
    result = int(v1.get()) + int(v2.get())
    v3.set(str(result))

Button(master, text='计算结果', command=calc)\
               .grid(row=1, column=2)

mainloop()
最佳答案
2021-7-14 12:14:04


验证 %p 改成大写的 %P,参考代码:

  1. from tkinter import *

  2. master = Tk()

  3. v1 = StringVar()
  4. v2 = StringVar()
  5. v3 = StringVar()

  6. def test(content):
  7.     return content.isdigit()

  8. testCMD = master.register(test)

  9. e1 = Entry(master, textvariable=v1, validate='key', \
  10.            validatecommand=(testCMD, '%P'))\
  11.            .grid(row=0, column=0)

  12. Label(master, text='+').grid(row=0, column=1)

  13. e2 = Entry(master, textvariable=v2, validate='key', \
  14.            validatecommand=(testCMD, '%P'))\
  15.            .grid(row=0, column=2)

  16. Label(master, text='=').grid(row=0, column=3)

  17. e3 = Entry(master, textvariable=v3, state='readonly')\
  18.      .grid(row=0, column=4)

  19. def calc():
  20.     result = int(v1.get()) + int(v2.get())
  21.     v3.set(str(result))

  22. Button(master, text='计算结果', command=calc)\
  23.                .grid(row=1, column=2)

  24. mainloop()
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-14 12:14:04 | 显示全部楼层    本楼为最佳答案   


验证 %p 改成大写的 %P,参考代码:

  1. from tkinter import *

  2. master = Tk()

  3. v1 = StringVar()
  4. v2 = StringVar()
  5. v3 = StringVar()

  6. def test(content):
  7.     return content.isdigit()

  8. testCMD = master.register(test)

  9. e1 = Entry(master, textvariable=v1, validate='key', \
  10.            validatecommand=(testCMD, '%P'))\
  11.            .grid(row=0, column=0)

  12. Label(master, text='+').grid(row=0, column=1)

  13. e2 = Entry(master, textvariable=v2, validate='key', \
  14.            validatecommand=(testCMD, '%P'))\
  15.            .grid(row=0, column=2)

  16. Label(master, text='=').grid(row=0, column=3)

  17. e3 = Entry(master, textvariable=v3, state='readonly')\
  18.      .grid(row=0, column=4)

  19. def calc():
  20.     result = int(v1.get()) + int(v2.get())
  21.     v3.set(str(result))

  22. Button(master, text='计算结果', command=calc)\
  23.                .grid(row=1, column=2)

  24. mainloop()
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-14 13:31:06 | 显示全部楼层
谢谢啦!可为啥不报错呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 18:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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