Python小工具_基于UI的工具(二)计算机器工具

一、需求
基于GUI的设计:实现两个数的运算
在这里插入图片描述
二、步骤分析:
1、画出控件:窗体、容器,文本框、按钮、静态标签
2、控件的布局:
在容器里,创建BoxSizer对象,有水平(HORIZONTAL)和垂直(VERTICAL)两种。将需要布局的控件,通过add方法,放入BoxSizer中,再给每个控件设置布局属性,执行布局panel1.SetSizer(boxsizer1)
BoxSizer对象的控件布局属性

属性 含义
控件名 文本框、按钮、静态标签等的对象
proportion 布局对象里控件的比例:proportion不写默认0,写了就按照比例分配
border 控件间隔像素
flag 对齐方式flag,分为左右上下和平铺满,间隔方向的间距大小由border决定

3、接受界面的数据,并进行处理:+、-、*、/

number1 = text_num1.GetValue()

4、按钮的单击事件,处理与关联:单击按钮后,调用运算处理

'''
定义按钮事件函数,将控件和函数进行绑定
函数参数必须是event,代表这是个按钮事件函数
一般来说,一个功能/按钮,绑定一个函数
'''
#定义按钮事件函数
def show_value_event(event):
    #获取文本框的输入内容
    number1 = text_num1.GetValue()
    text_result.SetValue(number1)
#将控件和函数进行绑定
button1.Bind(wx.EVT_BUTTON,show_value_event)

5、激活窗口并运行程序

#激活这个框架窗口
window.Show(True)
#运行APP
app.MainLoop()

三、代码:

#GUI计算器实例
import wx

class Calculator_GUI():
    #初始化各个对象
    def __init__(self):
        #创建APP对象
        self.app = wx.App()
        #创建第一个父窗体
        self.window = wx.Frame(None,title = '计算器小工具',size =(500,400))
        #容器
        self.panel1 = wx.Panel(self.window)
        #控件
        self.text_num1 = wx.TextCtrl(self.panel1) #运算数1
        self.text_operator = wx.TextCtrl(self.panel1) #运算符
        self.text_num2 = wx.TextCtrl(self.panel1) #运算数2
        self.button1 = wx.Button(self.panel1,label='计算')  #计算按钮
        self.text_result = wx.TextCtrl(self.panel1)  #运算结果

    #控件布局函数
    def BoxSizer_Layout(self):
        #在window窗体里添加一个容器panel,并创建文本框、按钮、静态文本标签进行布局
        boxsizer1 = wx.BoxSizer(wx.HORIZONTAL)
        boxsizer2 = wx.BoxSizer(wx.VERTICAL)
        boxsizer3 = wx.BoxSizer(wx.VERTICAL)
        # boxsizer3
        boxsizer3.Add(boxsizer1,flag=wx.EXPAND|wx.TOP|wx.BOTTOM,border=10)
        boxsizer3.Add(boxsizer2,flag=wx.EXPAND,border=10)
        #boxsizer1
        boxsizer1.Add(self.text_num1,proportion=1,border=10,flag=wx.LEFT)
        boxsizer1.Add(self.text_operator,proportion = 0,border=10,flag=wx.LEFT)
        boxsizer1.Add(self.text_num2,proportion = 1,border=10,flag=wx.LEFT|wx.RIGHT)
        #boxsizer2
        boxsizer2.Add(self.button1,proportion = 1,flag=wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT,border=10)
        boxsizer2.Add(self.text_result,proportion = 6,flag=wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT,border=10)
        #执行布局设置
        self.panel1.SetSizer(boxsizer3)

    #定义按钮事件函数
    def calculator_event(self,event):
        #获取文本框的输入内容
        number1 = self.text_num1.GetValue()
        operator = self.text_operator.GetValue()
        number2 = self.text_num2.GetValue()
        if operator=='+':
            res = int(number1)+int(number2)
        if operator=='-':
            res = int(number1)-int(number2)
        if operator=='*':
            res = int(number1)*int(number2)
        if operator=='/':
            res = int(number1)/int(number2)
        self.text_result.SetValue(number1+operator+number2+"="+str(res))

    # 将控件和函数进行绑定
    def Bing_event(self):
        self.button1.Bind(wx.EVT_BUTTON,self.calculator_event)

    def run(self):
        #激活这个框架窗口
        self.window.Show(True)
        #运行APP
        self.app.MainLoop()

if __name__ == '__main__':
    obj = Calculator_GUI()
    obj.BoxSizer_Layout()
    obj.Bing_event()
    obj.run()
发布了222 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42976139/article/details/103404601