需要先在电脑上安装Python3、pycharm、designer这三个软件,具体安装这里就不写了,下面直接进入话题。
打开DESIGNER,新建一个Main Window窗体
从左边栏里把钮和文本框控件拉出来,并修改第个控件的对象名和显示名称,如下
文本框一定要设置成只读
增加槽函数,函数名称要与后面程序中类的方法名称一样,一个按钮对应一个函数
信号/槽编辑,这个是把按钮的动作与函数名关联起来
UI设计完成之后保存成Mainwindow.ui文件,放在目录D:file计算器
designer设计好的UI文件转成PYTHON的py文件,在cmd命令行中切换到UI文件目录,然后执行命令pyuic5.exe -o XX.py xx.ui,下面执行pyuic5.exe -o Mainwindow.py Mainwindow.ui
执行完后会生成一个Mainwindow.py文件
接下来开pycharm,进入到计算器目录下面新建一个Mainwindow3.py文件
Mainwindow3.py文件代码如下
# coding: utf-8
import sys
from PyQt5 import QtWidgets,QtGui,QtWidgets
from MainWindow import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
class CMainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
number1 = 0
number2 = 0
type = 0
s = ""
def __init__(self, parent=None):
super(CMainWindow, self).__init__(parent)
self.setupUi(self)
# 主窗体设置
self.setFixedSize(self.width(), self.height())
self.show()
def AddNumber(self, number):
# print(self.s)
self.txtDisplay.setText(self.s)
# def Push00(self):
# self.s=self.s+"00"
# self.AddNumber("00")
def Push0(self):
self.s = self.s + "0"
self.AddNumber("0")
def Push1(self):
self.s = self.s + "1"
self.AddNumber("1")
def Push2(self):
self.s = self.s + "2"
self.AddNumber("2")
def Push3(self):
self.s = self.s + "3"
self.AddNumber("3")
def Push4(self):
self.s = self.s + "4"
self.AddNumber("4")
def Push5(self):
self.s = self.s + "5"
self.AddNumber("5")
def Push6(self):
self.s = self.s + "6"
self.AddNumber("6")
def Push7(self):
self.s = self.s + "7"
self.AddNumber("7")
def Push8(self):
self.s = self.s + "8"
self.AddNumber("8")
def Push9(self):
self.s = self.s + "9"
self.AddNumber("9")
def PushDot(self):
self.s = self.s + "."
self.AddNumber(".")
def PushClr(self):
self.s = ""
self.txtDisplay.setText("0")
self.number1 = 0
self.number2 = 0
self.type = 0
def PushAdd(self):
self.number1 = float(self.txtDisplay.text())
self.type = 1
self.s = self.s + "+"
self.AddNumber("+")
def PushSub(self):
self.number1 = float(self.txtDisplay.text())
self.type = 3
self.s = self.s + "-"
self.AddNumber("-")
def PushMul(self):
self.type = 2
self.s = self.s + "*"
self.AddNumber("*")
def PushDiv(self):
self.type = 2
self.s = self.s + "/"
self.AddNumber("/")
def PushEqr(self): # 重写计算函数
result = 0
if (self.s.__contains__("+")):
s = self.s.split("+")
for i in s:
result = result + int(i)
print(result)
self.s = str(result)
self.txtDisplay.setText(self.s)
elif (self.s[1::].__contains__("-")):
if (self.s[0].__eq__("-")):
self.s = self.s[1::]
s = self.s.split("-")
result = int(s[0] * (-1))
else:
s = self.s.split("-")
result = int(s[0])
for i in s[1::]:
result = result - int(i)
print(result)
self.s = str(result)
self.txtDisplay.setText(self.s)
elif (self.s.__contains__("*")):
s = self.s.split("*")
result = int(s[0])
for i in s[1::]:
result = result * int(i)
print(result)
self.s = str(result)
self.txtDisplay.setText(self.s)
elif (self.s.__contains__("/")): # 仅整除,且不能除以0
s = self.s.split("/")
result = int(s[0])
for i in s[1::]:
result = result / int(i)
print(result)
self.s = str(result)
self.txtDisplay.setText(self.s)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = CMainWindow()
# ui=Ui_MainWindow()
# ui.CMainWindow(MainWindow)
# MainWindow.show()
sys.exit(app.exec_())
最后在pycharm中执行测试



