跳至正文
View Categories

< 1 min read

主要内容 #

  • 模块概况
  • 数字操作模块
  • 1. 模块概况 #

    所有的成员函数模块都在做类似的如下操作
    第一步读取当前文本框的内容
    第二步基于当前的操作符,然后按需获取之前的数据进行综合的操作处理
    第三步将处理的结果给到文本框。
    程序如下:

    def deal_btn(self):
        _str = self.line_edit.text() # 获取文本框中的内容
        # some operate # 按需进行处理,可能需要获取前面保存的数据等
        self.line_edit.setText(_str) # 按需将处理好的数据结果返回到文本框

    2. 数字操作模块 #

    这里需要完成的功能包括两部分:
    第一部分是shou_msg,用于将结果显示在文本框;
    第二部分是数字的操作模块,主要是将数字显示在文本框中。
    程序如下:
    (将以下程序添加到Calculator类中)

        def show_msg(self):
            sender = self.sender() # 信号
            sender_text = sender.text() # 获取该信号的文本,也就是按钮的文本信息
    
            # 如下是对各个按钮进行判断,这次已经写完所有判断,但是有些判断还未实现
            if sender_text == 'C':
                self.clear_line_edit() # 清除屏幕
            elif sender_text in self.nums:
                self.deal_num_btn(sender_text) # 处理数字
            elif sender_text == '.':
                self.deal_point_btn() # 处理小数点
            elif sender_text in self.operators:
                self.deal_operator_btn(sender_text) # 处理操作符
            elif sender_text == '=': #处理等于号
                self.deal_equal_btn()
            elif sender_text == '+/-': # 处理正负号
                self.deal_sign_btn()
            elif sender_text == 'x': # 处理删除符号
                self.deal_return_btn()
    
        def deal_num_btn(self, sender_text):
            '''
            处理数字,将屏幕点击的数字输入到文本框中
    		参数:sender_text,也就是当前按钮的文本数据
            '''
            if self.after_operator: # 如果当前信号输入的文本是在操作符之后,需要将文本框的内容先清除
                self.line_edit.clear() # 清除文本框
                self.after_operator = False # flag置为false
            _str = self.line_edit.text() # 获取文本框的内容
            if _str == '0' or _str == 'Error' or self.empty_flag:
                _str = ''
            self.line_edit.setText(_str + sender_text) # 将文本框的内容和当前按钮的输入内容合并发送给文本框
            self.empty_flag = False # 非空

    为QPushButton控件的clicked方法连接到上述功能(即信号传递)
    在initUI函数中添加该连接,程序如下:

                btn.clicked.connect(self.show_msg)

    3. 小结 #

    • 计算器的模块操作能抽象出一个简单的通用模块
    • 本章完成了数字操作模块

    习题 #