在这篇博客中,我们将使用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_clicked
和calculate_result
。button_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_())