|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 dequantianhe 于 2019-9-28 18:00 编辑
各位大神,小弟刚刚看到tinter部分,想写个简单的计算器练练手,拓展个功能就是第一次计算完毕后,通过点击按钮实现清空输入框和输出框中的内容,然后支持二次计算,但代码写完,点击清空后总是没反应,不清楚具体问题在哪里,请大神指点,不胜感激!
补充一下:
已有大神给了回复,把clear()函数部分改写:
def clear():
v1.set("")
v2.set("")
v3.set("")
v4.set("")
这个方式我试了一下,的确可以把输入框清空,但再次输入时输入内容不再受初始限制条件限制(随便输什么都行,字符串之类的),所以这个结果还不是预想的。
再有,我看小甲鱼在课堂上是可以通过delete语句进行清空的,为什么这里就不行了呢?希望有了解的大神指点一下,谢谢!
具体代码如下:
#coding:utf-8
from tkinter import *
root = Tk()
def calc():
if v2.get()=='+':
res=int(v1.get())+int(v3.get())
elif v2.get()=='-':
res=int(v1.get())-int(v3.get())
elif v2.get()=='*':
res=int(v1.get())*int(v3.get())
elif v2.get()=='/':
res=int(v1.get())/int(v3.get())
v4.set(str(res))
def test(con):
return con.isdigit()
def tast(con):
if con in ['+','-','*','/']:
return True
else:
return False
def clear():
x1.delete(0,END)
xx.delete(0,END)
x2.delete(0,END)
x3.delete(0,END)
return False
testcmd=root.register(test)
tastcmd=root.register(tast)
v1=StringVar()
v2=StringVar()
v3=StringVar()
v4=StringVar()
frame=Frame(root)
frame.pack(padx=10,pady=10)
x1=Entry(frame,width=10,textvariable=v1,validate='key',\
validatecommand=(testcmd,'%P'))
x1.pack(padx=10,pady=5)
xx=Entry(frame,width=5,textvariable=v2,validate='key',\
validatecommand=(tastcmd,'%P'))
xx.pack(padx=25,pady=5)
x2=Entry(frame,width=10,textvariable=v3,validate='key',\
validatecommand=(testcmd,'%P'))
x2.pack(padx=40,pady=5)
fuhao=Label(frame,text="=",width=1)
fuhao.pack(padx=55,pady=5)
x3=Entry(frame,width=10,textvariable=v4,state='readonly')
x3.pack(padx=60,pady=5)
begin=Button(frame,text='开始计算',width=10,command=calc)
begin.pack(padx=10,pady=10)
qingkong=Button(frame,text='清空',width=10,command=clear)
qingkong.pack(padx=30,pady=10)
tuichu=Button(frame,text='退出',width=5,command=root.quit)
tuichu.pack(padx=50,pady=10)
mainloop()
帮你改了一下: # coding:utf-8
from tkinter import *
root = Tk()
def calc():
if v2.get() == '+':
res = int(v1.get()) + int(v3.get())
elif v2.get() == '-':
res = int(v1.get()) - int(v3.get())
elif v2.get() == '*':
res = int(v1.get()) * int(v3.get())
elif v2.get() == '/':
res = int(v1.get()) / int(v3.get())
v4.set(str(res))
def test(con):
return con.isdigit()
def tast(con):
if con in ['+', '-', '*', '/']:
return True
else:
return False
def clear():
v1.set("")
v2.set("")
v3.set("")
v4.set("")
testcmd = root.register(test)
tastcmd = root.register(tast)
v1 = StringVar()
v2 = StringVar()
v3 = StringVar()
v4 = StringVar()
frame = Frame(root)
frame.pack(padx=10, pady=10)
x1 = Entry(frame, width=10, textvariable=v1, validate='key', \
validatecommand=(testcmd, '%P'))
x1.pack(padx=10, pady=5)
xx = Entry(frame, width=5, textvariable=v2, validate='key', \
validatecommand=(tastcmd, '%P'))
xx.pack(padx=25, pady=5)
x2 = Entry(frame, width=10, textvariable=v3, validate='key', \
validatecommand=(testcmd, '%P'))
x2.pack(padx=40, pady=5)
fuhao = Label(frame, text="=", width=1)
fuhao.pack(padx=55, pady=5)
x3 = Entry(frame, width=10, textvariable=v4, state='readonly')
x3.pack(padx=60, pady=5)
begin = Button(frame, text='开始计算', width=10, command=calc)
begin.pack(padx=10, pady=10)
qingkong = Button(frame, text='清空', width=10, command=clear)
qingkong.pack(padx=30, pady=10)
tuichu = Button(frame, text='退出', width=5, command=root.quit)
tuichu.pack(padx=50, pady=10)
mainloop()
|
|