下面是一个使用 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_())
代码讲解
-
窗口设置:
- 创建一个继承自
QMainWindow
的Calculator
类,并设置窗口标题以及初始尺寸。
- 创建一个继承自
-
布局设置:
- 使用
QGridLayout
来排布按钮和显示区域。显示区域用QLineEdit
组件,并将其设置为只读。
- 使用
-
按钮创建:
- 创建了 16 个按钮,包括数字(0-9)、操作符(+、-、*、/)、小数点(.)、等号(=)和清除(C)按钮,并将其添加到布局中。
-
按钮事件:
- 按钮的
clicked
信号连接到on_button_click
方法,用于处理用户输入并更新显示区域的内容。
- 按钮的
-
计算功能:
- 在按下等号时,使用
eval()
函数计算当前输入的表达式,并处理可能出现的异常。如果计算成功,则更新显示区域为结果,否则显示 “错误”。
- 在按下等号时,使用
-
清除功能:
- 当点击清除按钮时,调用
clear_display
方法清空当前输入。
- 当点击清除按钮时,调用
运行代码
将上述代码保存至一个文件中,并在命令行中运行:
python calculator.py
此时你将看到一个简单的计算器界面,你可以用它进行基本的加减乘除运算。