python gui界面问题,新手求教

fromTkinterimport*defframe(root,side):w=Frame(root)w.pack(side=side,expand=YES,fill=B... from Tkinter import *
def frame(root,side):
w=Frame(root)
w.pack(side=side,expand=YES,fill=BOTH)
return w

def button(root,side,text,command=None):
w=Button(root,text=text,command=command)
w.pack(side=side,expand=YES,fill=BOTH)
return w

class Calculator(Frame):
def __init__(self):
Frame.__init__(self)
self.pack(expand=YES,fill=BOTH)
self.master.title("Simple Calculator")
self.master.iconname("calcl")

display=StringVar()
Entry(self,relief=SUNKEN,textvariable=display).pack(side=TOP,
expand=YES,fill=BOTH)

for key in ("123","456","789","-0."):
deyF=frame(self,TOP)
for char in key:
button(deyF,LEFT,char,lambda w=display,s="%s"%char: w.set\
(w.get()+s))

opsF=frame(self,TOP)
for char in "+-*/=":
if char=='=':
btn=button(opsF,LEFT,char)
btn.bind("<ButtonRelease-1>",lambda e,s=self, w=display: \
s.clac(w),'+')
else:
btn=button(opsF,LEFT,char,lambda w=display,c=char: w.set\
(w.get()+' '+c+' '))

clearF=frame(self,BOTTOM)
button(clearF,LEFT,'Clr',lambda w=display: w.set(' '))

def clac(self,display):
try:
display.set(eval(display.get()))
except SyntaxError:
display.set("ERROR")
except ZeroDivisionError:
display.set("ZeroDivisionError")

if __name__=="__main__": Calculator().mainloop()

上面的代码是一个网上找到的python计算器界面,小弟python新手,想修改成一个界面,就是可以运行处计算器输入数字可以显示、同时也可以粘贴进去一串数字、点下面的clr不是归0了 而是运行其他的python代码,请问应该如何修改。首先+-*/可以全部删除掉 ,删除中间的一段代码就可以 实现,但是对于clr点击后的效果应该如何改?求高手赐教,QQ280435089 谢谢!

from Tkinter import *
def frame(root,side):
w=Frame(root)
w.pack(side=side,expand=YES,fill=BOTH)
return w
def button(root,side,text,command=None):
w=Button(root,text=text,command=command)
w.pack(side=side,expand=YES,fill=BOTH)
return w
class Calculator(Frame):
def __init__(self):
Frame.__init__(self)
self.pack(expand=YES,fill=BOTH)
self.master.title("Simple Calculator")
self.master.iconname("calcl")

display=StringVar()
Entry(self,relief=SUNKEN,textvariable=display).pack(side=TOP,
expand=YES,fill=BOTH)

for key in ("123","456","789","-0."):
deyF=frame(self,TOP)
for char in key:
button(deyF,LEFT,char,lambda w=display,s="%s"%char: w.set\
(w.get()+s))

opsF=frame(self,TOP)

clearF=frame(self,BOTTOM)
button(clearF,LEFT,'Clr',lambda w=display: w.set(' '))

def clac(self,display):
try:
display.set(eval(display.get()))
except SyntaxError:
display.set("ERROR")
except ZeroDivisionError:
display.set("ZeroDivisionError")

if __name__=="__main__": Calculator().mainloop()
展开
 我来答
bdwisyou7d
推荐于2017-10-03 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1035万
展开全部
绑定事件处理就可以了。
btn=button(opsF,LEFT,char)
btn.bind("<ButtonRelease-1>",lambda e,s=self, w=display: \
s.clac(w),'+')

比如这里,lambda.....你换成你的函数名,就是将按钮的事件指向另一个函数了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式