import sys from calculator import Ui_MainWindow from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class calculator(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.count = [] self.front = 0 self.double = 0 self.choice = '+' @pyqtSlot() def on_pushButton0_clicked(self): self.count.append(0) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton1_clicked(self): self.count.append(1) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton2_clicked(self): self.count.append(2) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton3_clicked(self): self.count.append(3) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton4_clicked(self): self.count.append(4) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton5_clicked(self): self.count.append(5) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton6_clicked(self): self.count.append(6) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton7_clicked(self): self.count.append(7) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton8_clicked(self): self.count.append(8) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) @pyqtSlot() def on_pushButton9_clicked(self): self.count.append(9) result = 0 for i in range(len(self.count)): result = pow(10, i) * int(self.count[-(i + 1)]) + result self.lcdNumber.display(int(result)) if __name__ == '__main__': app = QApplication(sys.argv) ui = calculator() ui.show() sys.exit(app.exec_())
时间: 2024-04-19 10:28:02 浏览: 22
这是一个使用PyQt5实现的一个简单的计算器界面程序。该程序定义了一个名为`calculator`的类,继承自`QMainWindow`和`Ui_MainWindow`。在构造函数中初始化了一些变量,并连接了按钮的点击事件到对应的槽函数。
每个数字按钮的点击事件都会将对应的数字添加到`self.count`列表中,并根据列表中的数字计算出当前结果,并显示在`lcdNumber`上。
最后,通过创建`QApplication`对象和`calculator`对象,显示计算器界面,并进入主事件循环。
请注意,为了运行该程序,你需要确保已经安装了PyQt5和相关的依赖库。
相关问题
通过PyQt5使用designer.exe设计UI,完成简易计算器的基本功能。
好的,以下是简易计算器的基本功能实现步骤:
1. 使用designer.exe设计UI界面,添加所需的控件,如QLineEdit(用于显示计算结果)、QPushButton(用于输入数字和运算符)等。
2. 在设计好的UI界面中,双击每个QPushButton控件,打开槽函数编辑器,连接相应的槽函数,如数字按钮连接数字输入槽函数、运算符按钮连接运算槽函数等。
3. 编写数字输入槽函数,将输入的数字添加到QLineEdit控件中;编写运算槽函数,根据输入的运算符进行相应的计算,并将计算结果显示到QLineEdit控件中。
4. 最后在主程序中加载设计好的UI界面,启动应用程序,即可实现简易计算器的基本功能。
以下是示例代码,你可以参考一下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QPushButton
from PyQt5 import uic
class Calculator(QMainWindow):
def __init__(self):
super(Calculator, self).__init__()
uic.loadUi("calculator.ui", self) # 加载UI文件
self.result = 0
self.num1 = None
self.num2 = None
self.op = None
# 连接数字输入槽函数
self.pushButton_0.clicked.connect(lambda: self.on_num_button_clicked(0))
self.pushButton_1.clicked.connect(lambda: self.on_num_button_clicked(1))
self.pushButton_2.clicked.connect(lambda: self.on_num_button_clicked(2))
self.pushButton_3.clicked.connect(lambda: self.on_num_button_clicked(3))
self.pushButton_4.clicked.connect(lambda: self.on_num_button_clicked(4))
self.pushButton_5.clicked.connect(lambda: self.on_num_button_clicked(5))
self.pushButton_6.clicked.connect(lambda: self.on_num_button_clicked(6))
self.pushButton_7.clicked.connect(lambda: self.on_num_button_clicked(7))
self.pushButton_8.clicked.connect(lambda: self.on_num_button_clicked(8))
self.pushButton_9.clicked.connect(lambda: self.on_num_button_clicked(9))
# 连接运算槽函数
self.pushButton_add.clicked.connect(lambda: self.on_op_button_clicked("+"))
self.pushButton_sub.clicked.connect(lambda: self.on_op_button_clicked("-"))
self.pushButton_mul.clicked.connect(lambda: self.on_op_button_clicked("*"))
self.pushButton_div.clicked.connect(lambda: self.on_op_button_clicked("/"))
self.pushButton_eq.clicked.connect(self.on_eq_button_clicked)
self.pushButton_clear.clicked.connect(self.on_clear_button_clicked)
def on_num_button_clicked(self, num):
if self.op is None:
if self.num1 is None:
self.num1 = str(num)
else:
self.num1 += str(num)
self.lineEdit.setText(self.num1)
else:
if self.num2 is None:
self.num2 = str(num)
else:
self.num2 += str(num)
self.lineEdit.setText(self.num2)
def on_op_button_clicked(self, op):
self.op = op
def on_eq_button_clicked(self):
if self.num1 is not None and self.num2 is not None:
num1 = float(self.num1)
num2 = float(self.num2)
if self.op == "+":
self.result = num1 + num2
elif self.op == "-":
self.result = num1 - num2
elif self.op == "*":
self.result = num1 * num2
elif self.op == "/":
if num2 == 0:
self.result = "Error"
else:
self.result = num1 / num2
self.lineEdit.setText(str(self.result))
def on_clear_button_clicked(self):
self.result = 0
self.num1 = None
self.num2 = None
self.op = None
self.lineEdit.setText("0")
if __name__ == "__main__":
app = QApplication([])
calculator = Calculator()
calculator.show()
app.exec_()
```
在上面的代码中,我们通过`uic.loadUi()`方法加载了设计好的UI文件`calculator.ui`,然后连接了数字输入槽函数`on_num_button_clicked()`、运算槽函数`on_op_button_clicked()`和等号槽函数`on_eq_button_clicked()`,以及清除槽函数`on_clear_button_clicked()`。在数字输入槽函数中,我们通过判断当前输入的数字是属于第一个操作数还是第二个操作数,将其显示在QLineEdit控件中;在运算槽函数中,我们记录了当前选择的运算符,并在等号槽函数中进行相应的计算;在清除槽函数中,我们将所有变量恢复到初始状态,并将QLineEdit控件中的文本设置为"0"。
最后,我们通过`app.exec_()`方法启动应用程序,即可看到简易计算器的UI界面。
通过PyQt5使用designer.exe设计UI,完成简易计算器的基本功能。
好的,以下是实现简易计算器的步骤:
1. 首先打开designer.exe,选择“Main Window”创建一个新的窗口。
2. 在界面上添加一个QLineEdit用于显示计算结果,命名为lineEdit_result。
3. 添加10个QPushButton用于输入数字和小数点,命名为pushButton_0到pushButton_9和pushButton_dot。
4. 添加加、减、乘、除、等于、清空和删除按钮,命名为pushButton_add、pushButton_minus、pushButton_multiply、pushButton_divide、pushButton_equal、pushButton_clear和pushButton_delete。
5. 在界面中调整按钮的位置和大小,使其看起来更加美观。
6. 在代码中导入必要的模块:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from PyQt5.uic import loadUi
```
7. 定义一个类Calculator继承自QMainWindow类,并通过loadUi方法加载设计好的UI文件。
```python
class Calculator(QMainWindow):
def __init__(self):
super().__init__()
loadUi("calculator.ui", self)
```
8. 在类中定义一些变量,用于保存计算的数值和操作符。
```python
self.first_num = None # 第一个数
self.second_num = None # 第二个数
self.operator = None # 操作符
self.is_new_num = True # 是否输入了新的数字
```
9. 定义一些槽函数,用于响应按钮的点击事件。例如,当数字按钮被点击时,将数字添加到lineEdit_result中。
```python
def on_number_clicked(self):
button = self.sender()
if self.is_new_num:
self.lineEdit_result.setText(button.text())
self.is_new_num = False
else:
self.lineEdit_result.setText(self.lineEdit_result.text() + button.text())
```
10. 当操作符按钮被点击时,保存第一个数和操作符,并清空lineEdit_result。
```python
def on_operator_clicked(self):
button = self.sender()
self.first_num = float(self.lineEdit_result.text())
self.operator = button.text()
self.lineEdit_result.setText("")
self.is_new_num = True
```
11. 当等于按钮被点击时,根据操作符计算结果并显示在lineEdit_result中。
```python
def on_equal_clicked(self):
if self.operator is None:
return
self.second_num = float(self.lineEdit_result.text())
if self.operator == "+":
result = self.first_num + self.second_num
elif self.operator == "-":
result = self.first_num - self.second_num
elif self.operator == "*":
result = self.first_num * self.second_num
elif self.operator == "/":
if self.second_num == 0:
QMessageBox.warning(self, "Warning", "Division by zero!")
return
result = self.first_num / self.second_num
else:
return
self.lineEdit_result.setText(str(result))
self.first_num = None
self.second_num = None
self.operator = None
```
12. 当清空按钮被点击时,清空lineEdit_result和保存的数值和操作符。
```python
def on_clear_clicked(self):
self.lineEdit_result.setText("")
self.first_num = None
self.second_num = None
self.operator = None
self.is_new_num = True
```
13. 当删除按钮被点击时,删除lineEdit_result中的最后一个字符。
```python
def on_delete_clicked(self):
text = self.lineEdit_result.text()[:-1]
self.lineEdit_result.setText(text)
```
14. 最后,在main函数中创建应用程序对象,创建Calculator窗口并显示。
```python
if __name__ == "__main__":
app = QApplication([])
calculator = Calculator()
calculator.show()
app.exec_()
```
完成上述步骤后,保存文件并运行程序,即可看到简易计算器的界面。