利用python中的pyqt做一个简易计算器
时间: 2023-10-07 15:14:14 浏览: 154
好的,以下是一个基于 PyQt5 的简易计算器示例代码。您可以将其保存为 .py 文件并运行,或者在 Python 解释器中逐行执行。
```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLineEdit
class Calculator(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('Calculator')
# Create the input field
self.input_field = QLineEdit(self)
self.input_field.setReadOnly(True)
self.input_field.setAlignment(Qt.AlignRight)
self.input_field.setMaxLength(16)
# Create the buttons
self.buttons = []
button_values = ['7', '8', '9', 'C', '4', '5', '6', '/', '1', '2', '3', '*', '0', '.', '+', '-']
for value in button_values:
button = QPushButton(value, self)
button.setFixedSize(40, 40)
button.clicked.connect(self.handle_button_click)
self.buttons.append(button)
# Create the layout
button_layout = [
[self.buttons[0], self.buttons[1], self.buttons[2], self.buttons[3]],
[self.buttons[4], self.buttons[5], self.buttons[6], self.buttons[7]],
[self.buttons[8], self.buttons[9], self.buttons[10], self.buttons[11]],
[self.buttons[12], self.buttons[13], self.buttons[14], self.buttons[15]],
]
layout = QVBoxLayout()
layout.addWidget(self.input_field)
for row in button_layout:
row_layout = QHBoxLayout()
for button in row:
row_layout.addWidget(button)
layout.addLayout(row_layout)
self.setLayout(layout)
def handle_button_click(self):
button = self.sender()
if button.text() == 'C':
self.input_field.setText('')
elif button.text() == '=':
try:
result = str(eval(self.input_field.text()))
except:
result = 'Error'
self.input_field.setText(result)
else:
self.input_field.setText(self.input_field.text() + button.text())
if __name__ == '__main__':
app = QApplication([])
calculator = Calculator()
calculator.show()
app.exec_()
```
在这个例子中,我们创建了一个 `Calculator` 类,它继承自 `QWidget`,并覆盖了 `__init__()` 方法来初始化用户界面。我们使用 `QLineEdit` 控件创建了一个输入框,用于显示计算结果和用户输入的数字和运算符。我们还创建了一个包含所有数字和运算符的 `QPushButton` 列表,以及一个包含这些按钮的布局。在 `handle_button_click()` 方法中,我们根据用户点击的按钮执行不同的操作,例如添加数字或运算符到输入框中,或者清空输入框。最后,我们使用 `QVBoxLayout` 和 `QHBoxLayout` 来创建一个垂直布局和若干水平布局,以实现计算器的布局。
运行这个例子后,您将看到一个简单的计算器界面,您可以使用它进行基本的数字和运算符计算。
阅读全文