Bootstrap

使用 PyQt5 创建 计算器程序

在这篇博客中,我们将使用Python的PyQt5库来创建一个简单的计算器应用。我们的计算器将有基本的加、减、乘、除功能。

1. 导入所需的模块

首先,我们需要导入我们将在代码中使用的所有模块:

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

2. 创建主窗口

接下来,我们创建一个名为Calculator的类,该类继承自QMainWindow。在这个类中,我们设置窗口的标题和大小,并创建一个堆叠窗口部件(QWidget),该部件将允许我们在不同的界面之间切换。

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

        self.setWindowTitle("计算器")
        self.setGeometry(100, 100, 300, 300)

        self.widget = QWidget()
        self.setCentralWidget(self.widget)

3. 创建计算器界面

我们的计算器界面将包含一个显示结果的QLineEdit和一系列的QPushButton,代表数字0-9、小数点以及加、减、乘、除和等于操作。

        self.layout = QVBoxLayout()
        self.widget.setLayout(self.layout)

        self.display = QLineEdit()
        self.layout.addWidget(self.display)

        self.grid = QGridLayout()
        self.layout.addLayout(self.grid)

        buttons = [
            '7', '8', '9', '/',
            '4', '5', '6', '*',
            '1', '2', '3', '-',
            '0', '.', '=', '+',
        ]

4. 添加按钮和功能

我们使用一个循环来创建所有的按钮,并将它们添加到网格布局中。每个按钮都连接到一个函数,当按钮被点击时,这个函数会被调用。

        row = 0
        col = 0

        for button in buttons:
            if button == "=":
                btn = QPushButton(button)
                btn.clicked.connect(self.calculate_result)
                self.grid.addWidget(btn, row, col, 1, 2)
                col += 1
            else:
                btn = QPushButton(button)
                btn.clicked.connect(self.button_clicked)
                self.grid.addWidget(btn, row, col)

            col += 1
            if col > 3:
                col = 0
                row += 1

5. 实现按钮功能

我们需要实现两个函数:button_clickedcalculate_resultbutton_clicked函数会在数字和操作符按钮被点击时被调用,它会将按钮的文本添加到显示屏上。calculate_result函数会在等于按钮被点击时被调用,它会计算显示屏上的表达式,并显示结果。

    def button_clicked(self):
        button_text = self.sender().text()
        display_text = self.display.text()
        new_text = display_text + button_text
        self.display.setText(new_text)

    def calculate_result(self):
        display_text = self.display.text()
        try:
            result = eval(display_text)
            self.display.setText(str(result))
        except Exception as e:
            self.display.setText("错误")

6. 运行应用程序

最后,我们创建一个QApplication实例,创建一个Calculator实例,并显示主窗口。然后,我们进入应用程序的主循环,等待用户的交互。

if __name__ == "__main__":
    app = QApplication(sys.argv)
    calc = Calculator()
    calc.show()
    sys.exit(app.exec_())

效果图:

;