#使用面向对象思想研发简易计算器
#导入相关的类库文件
import wx
class cal_GUI():
# 类的初始化方法,创建所有的控件
def __init__(self):
self.app=wx.App()
self.window=wx.Frame(None,title="计算器",size=(600,500))
self.panel=wx.Panel(self.window)
#创建文本框
self.txtNuml=wx.TextCtrl(self.panel)
self.txtOperator=wx.TextCtrl(self.panel)
self.txtNum2=wx.TextCtrl(self.panel)
self.txtResult=wx.TextCtrl(self.panel)
#创建按钮控件
self.equal=wx.Button(self.panel,label="=")
#定义布局
def boxsizer(self):
#设置一个水平的BoxSizer
boxsizer1=wx.BoxSizer(wx.HORIZONTAL)
#把3个文本框加入BoxSize1中
boxsizer1.Add(self.txtNuml,proportion=1,flag=wx.LEFT,border=8)
boxsizer1.Add(self.txtOperator,proportion=0,flag=wx.LEFT,border=8)
boxsizer1.Add(self.txtNum2,proportion=1,flag=wx.LEFT|wx.RIGHT,border=8)
#设置一个垂直的BoxSizer
boxsizer2=wx.BoxSizer(wx.VERTICAL)
boxsizer2.Add(boxsizer1,flag=wx.TOP|wx.EXPAND,border=8)
boxsizer2.Add(self.equal,flag=wx.TOP|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM,border=8)
boxsizer2.Add(self.txtResult,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM,border=8)
#让boxsizer生效
self.panel.SetSizer(boxsizer2)
#定义运算事件
def cal_event(self,event):
#获取控件中输入的内容
num1=self.txtNuml.GetValue()
Operator=self.txtOperator.GetValue()
num2=self.txtNum2.GetValue()
#根据运算符进行运算处理
if Operator=="+":
r=float(num1)+float(num2)
elif Operator=="-":
r=float(num1)-float(num2)
elif Operator=="*":
r=float(num1)*float(num2)
elif Operator=="/":
r=float(num1)/float(num2)
else:
print("错误")
# 将输出数据放入结果文本框中
self.txtResult.SetValue(str(r))
#将"="按钮和运算事件绑定
def bind_set(self):
self.equal.Bind(wx.EVT_BUTTON,self.cal_event)
#定义显示方法
def run(self):
# 激活窗体
self.window.Show(True)
#运行APP
self.app.MainLoop()
if __name__ == '__main__':
cal_GUI_obj=cal_GUI()
cal_GUI_obj.boxsizer()
cal_GUI_obj.bind_set()
cal_GUI_obj.run()