PyQt5小项目实践——计算器

下面是一个使用 Python 和 PyQt5 创建的简单计算器应用程序,它具有基本的计算功能,并且布局与常见的计算器相似。

安装 PyQt5

首先,请确保你已经安装了 PyQt5。如果还没有安装,可以使用以下命令进行安装:

pip install PyQt5

计算器代码

将以下代码保存为 calculator.py

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

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

        # 设置窗口标题和大小
        self.setWindowTitle("计算器")
        self.setGeometry(100, 100, 300, 400)

        # 创建中心小部件
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        # 创建网格布局
        self.grid_layout = QGridLayout()
        self.central_widget.setLayout(self.grid_layout)

        # 创建显示区域
        self.display = QLineEdit()
        self.display.setReadOnly(True)
        self.display.setFixedHeight(40)
        self.grid_layout.addWidget(self.display, 0, 0, 1, 4)

        # 按钮文本及其位置
        buttons = [
            '7', '8', '9', '/',
            '4', '5', '6', '*',
            '1', '2', '3', '-',
            '0', '.', '=', '+'
        ]

        positions = [
            (1, 0), (1, 1), (1, 2), (1, 3),
            (2, 0), (2, 1), (2, 2), (2, 3),
            (3, 0), (3, 1), (3, 2), (3, 3),
            (4, 0), (4, 1), (4, 2), (4, 3),
        ]

        # 创建按钮并添加到布局
        for position, button_text in zip(positions, buttons):
            button = QPushButton(button_text)
            button.clicked.connect(self.on_button_click)
            self.grid_layout.addWidget(button, *position)

        # 创建清除按钮并添加到布局
        clear_button = QPushButton('C')
        clear_button.clicked.connect(self.clear_display)
        self.grid_layout.addWidget(clear_button, 5, 0, 1, 4)

        self.current_expression = ""
        self.reset_display()

    def on_button_click(self):
        button_text = self.sender().text()
        
        if button_text == '=':
            # 计算结果并更新显示
            try:
                result = str(eval(self.current_expression))
                self.display.setText(result)
                self.current_expression = result
            except Exception:
                self.display.setText("错误")
                self.current_expression = ""
        else:
            # 更新当前表达式
            self.current_expression += button_text
            self.display.setText(self.current_expression)

    def clear_display(self):
        # 清空显示区域
        self.current_expression = ""
        self.reset_display()

    def reset_display(self):
        # 重置显示内容
        self.display.clear()

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

代码讲解

  1. 窗口设置

    • 创建一个继承自 QMainWindowCalculator 类,并设置窗口标题以及初始尺寸。
  2. 布局设置

    • 使用 QGridLayout 来排布按钮和显示区域。显示区域用 QLineEdit 组件,并将其设置为只读。
  3. 按钮创建

    • 创建了 16 个按钮,包括数字(0-9)、操作符(+、-、*、/)、小数点(.)、等号(=)和清除(C)按钮,并将其添加到布局中。
  4. 按钮事件

    • 按钮的 clicked 信号连接到 on_button_click 方法,用于处理用户输入并更新显示区域的内容。
  5. 计算功能

    • 在按下等号时,使用 eval() 函数计算当前输入的表达式,并处理可能出现的异常。如果计算成功,则更新显示区域为结果,否则显示 “错误”。
  6. 清除功能

    • 当点击清除按钮时,调用 clear_display 方法清空当前输入。

运行代码

将上述代码保存至一个文件中,并在命令行中运行:

python calculator.py

此时你将看到一个简单的计算器界面,你可以用它进行基本的加减乘除运算。

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值