Star1111 发表于 2020-4-20 21:39:04

关于Tkinter的Entry不能为空

RT,就是一开始是空的,然后第一次输入完成之后想把第一次输入的数值删除掉,重新输入第二次数值,可是发现第一次的数值只能删除剩下 最后一位数,不能全部删除,请问这是什么问题?

from tkinter import *

master = Tk()

frame = Frame(master)
frame.pack(padx=10,pady=10)

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

def test(content):
    return content.isdigit() #用这个函数测试输入是否为数字,返回True或者False

testCMD = master.register(test) #要作为测验的函数,需要经过这一步

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

v = IntVar()
v.set(1)

Radiobutton(frame,text='+',variable=v,value=1).grid(row=0,column=1)
Radiobutton(frame,text='-',variable=v,value=2).grid(row=1,column=1)
Radiobutton(frame,text='*',variable=v,value=3).grid(row=2,column=1)
Radiobutton(frame,text='/',variable=v,value=4).grid(row=3,column=1)


e2 = Entry(frame, width=10,textvariable=v2,validate='key',\
         validatecommand=(testCMD,'%P')).grid(row=1,column=2)


Label(frame,text='=').grid(row=1,column=3)

e3 = Entry(frame,width=10,textvariable=v3,state='readonly').grid(row=1,column=4)

def calc():
    A = v.get()
    if A == 1:
      result = int(v1.get()) + int(v2.get())
      v3.set(str(result))
    elif A == 2:
      result = int(v1.get()) - int(v2.get())
      v3.set(str(result))
    elif A == 3:
      result = int(v1.get()) * int(v2.get())
      v3.set(str(result))
    elif A == 4:
      try:
            result = float(v1.get()) / float(v2.get())
            v3.set(str(result))
      except:
            v3.set('被除数不能为0')
            

Button(frame, text='开始计算',command=calc).grid(row=5,column=2,pady=5)

mainloop()


这是源代码,请教各位

weiter 发表于 2020-4-21 10:45:27

可以用delete

Star1111 发表于 2020-4-22 20:32:21

weiter 发表于 2020-4-21 10:45
可以用delete

emmmm能不能就是在输入框就可以完全删除的办法

weiter 发表于 2020-4-22 20:40:46

Star1111 发表于 2020-4-22 20:32
emmmm能不能就是在输入框就可以完全删除的办法

这个就是在输入框干掉啊(关键是我一直不太会用delete,基本上我每次使用都出故障)
页: [1]
查看完整版本: 关于Tkinter的Entry不能为空