图形界面四则运算计算器(Python+PyQt5)

(1) 导入所需的库和模块。
(2) 创建一个名为`Calculator`的类,继承自`QMainWindow`。
(3) 在`Calculator`类的`__init__`方法中,调用`initUI`方法初始化界面。
(4) 在`initUI`方法中,设置窗口标题和大小,创建显示结果的文本框,并调用`create_buttons`方法创建按钮。
(5) 在`create_buttons`方法中,创建数字按钮、运算符按钮、清除按钮和等号按钮,并将它们添加到网格布局中。
(6) 为每个按钮设置信号槽,以便在点击按钮时执行相应的操作。
(7) 在`on_number_click`、`on_operator_click`、`on_clear_click`和`on_equal_click`方法中,分别处理数字按钮、运算符按钮、清除按钮和等号按钮的点击事件。
(8) 在主程序中,创建`Calculator`实例并运行应用。

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QPushButton, QGridLayout, QWidget

class Calculator(QMainWindow):
    def __init__(self):
        super().__init__()

        # 初始化界面
        self.initUI()
        
    def initUI(self):
        # 设置窗口标题和大小
        self.setWindowTitle('简易计算器')
        self.setGeometry(300, 300, 300, 300)
        # 创建显示结果的文本框
        self.result_display = QLineEdit(self)
        self.result_display.setReadOnly(True) # 设置为只读
        self.result_display.move(10, 10)
        self.result_display.resize(280, 40)

        # 创建按钮并设置信号槽
        self.create_buttons()
        # 显示窗口
        self.show()

    def create_buttons(self):
        # 创建数字按钮
        self.num_buttons = []
        for i in range(10):
            button = QPushButton(str(i), self)
            button.clicked.connect(self.on_number_click)
            self.num_buttons.append(button)
        # 创建运算符按钮
        self.add_button = QPushButton('+', self)
        self.add_button.clicked.connect(self.on_operator_click)
        self.subtract_button = QPushButton('-', self)
        self.subtract_button.clicked.connect(self.on_operator_click)
        self.multiply_button = QPushButton('*', self)
        self.multiply_button.clicked.connect(self.on_operator_click)
        self.divide_button = QPushButton('/', self)
        self.divide_button.clicked.connect(self.on_operator_click)

        # 创建清除按钮
        self.clear_button = QPushButton('C', self)
        self.clear_button.clicked.connect(self.on_clear_click)
        # 创建等号按钮
        self.equal_button = QPushButton('=', self)
        self.equal_button.clicked.connect(self.on_equal_click)
        # 使用网格布局排列按钮
        grid = QGridLayout()
        grid.setSpacing(5)
        positions = [(i, j) for i in range(1, 5) for j in range(4)]
        for pos, button in zip(positions, self.num_buttons[1:] + [self.num_buttons[0], self.add_button, self.subtract_button, self.multiply_button, self.divide_button, self.clear_button, self.equal_button]):
            grid.addWidget(button, *pos)
        central_widget = QWidget(self)
        central_widget.setLayout(grid)
        central_widget.move(10, 60)
        central_widget.resize(280, 230)

    def on_number_click(self):
        # 数字按钮点击事件处理
        button = self.sender()
        self.result_display.setText(self.result_display.text() + button.text())
        
    def on_operator_click(self):
        # 运算符按钮点击事件处理
        button = self.sender()
        self.result_display.setText(self.result_display.text() + ' ' + button.text() + ' ')

    def on_clear_click(self):
        # 清除按钮点击事件处理
        self.result_display.clear()

    def on_equal_click(self):
        # 等号按钮点击事件处理
        try:
            result = eval(self.result_display.text())
            self.result_display.setText(str(result))
        except:
            self.result_display.setText('错误')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    calculator = Calculator()
    sys.exit(app.exec_())

猜你喜欢

转载自blog.csdn.net/greatau/article/details/133825547