darchir 发表于 2021-7-14 12:10:20

哪位大佬帮我看看我的tkinter代码哪里出了问题

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()

Twilight6 发表于 2021-7-14 12:14:04



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

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()

darchir 发表于 2021-7-14 13:31:06

谢谢啦!可为啥不报错呢?
页: [1]
查看完整版本: 哪位大佬帮我看看我的tkinter代码哪里出了问题