ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用Python编写关于计算图形面积的代码实现抛弃控制台程序实现用界面窗口来实现

2021-01-18 19:59:45  阅读:218  来源: 互联网

标签:程序实现 QtCore self label Python 控制台 QtWidgets MainWindow lineEdit


用Python编写关于计算图形面积的代码实现抛弃控制台程序实现用界面窗口来实现

界面是用Python + qt5 来实现的由于代码简单就窗口函数和功能函数没有分开写直接写在了untitled.py文件中,代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QLineEdit, QMessageBox

from figure import *

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(477, 551)
        MainWindow.setMinimumSize(QSize(477, 551))
        MainWindow.setMaximumSize(QSize(477, 551))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(100, 20, 151, 41))
        self.label.setObjectName("label")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(250, 30, 111, 31))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.activated.connect(self.change)
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(80, 141, 71, 20))
        self.label_2.setObjectName("label_2")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(80, 180, 71, 20))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(80, 220, 71, 20))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(80, 260, 71, 20))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(80, 300, 71, 20))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(80, 340, 71, 20))
        self.label_8.setObjectName("label_8")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(150, 140, 113, 21))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit.setValidator(QtGui.QIntValidator(10000000, 99999999))
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(150, 180, 113, 21))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(150, 220, 113, 21))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_3.setValidator(QtGui.QIntValidator(10000000, 99999999))
        self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_4.setGeometry(QtCore.QRect(150, 260, 113, 21))
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.lineEdit_4.setValidator(QtGui.QIntValidator(10000000, 99999999))
        self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_5.setGeometry(QtCore.QRect(150, 300, 113, 21))
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.lineEdit_5.setValidator(QtGui.QIntValidator(10000000, 99999999))
        self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_6.setGeometry(QtCore.QRect(150, 340, 113, 21))
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.lineEdit_6.setValidator(QtGui.QIntValidator(10000000, 99999999))
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(170, 390, 41, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy)
        self.label_3.setObjectName("label_3")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(170, 440, 41, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
        self.label_9.setSizePolicy(sizePolicy)
        self.label_9.setObjectName("label_9")
        self.lineEdit_7 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_7.setGeometry(QtCore.QRect(210, 390, 81, 31))
        self.lineEdit_7.setObjectName("lineEdit_7")
        self.lineEdit_8 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_8.setGeometry(QtCore.QRect(210, 440, 81, 31))
        self.lineEdit_8.setObjectName("lineEdit_8")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)#1
        self.pushButton.setGeometry(QtCore.QRect(330, 200, 93, 28))
        self.pushButton.clicked.connect(self.operate)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)#2
        self.pushButton_2.setGeometry(QtCore.QRect(330, 290, 93, 28))
        self.pushButton_2.clicked.connect(self.renovate)
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)  # 3
        self.pushButton_3.setGeometry(QtCore.QRect(0, 0, 60, 40))
        self.pushButton_3.clicked.connect(self.info)
        self.pushButton_3.setObjectName("pushButton_3")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 477, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "图形面积计算器"))
        self.label.setText(_translate("MainWindow", "选择你要计算的图形:"))
        self.comboBox.setItemText(0, _translate("MainWindow", "圆形"))
        self.comboBox.setItemText(1, _translate("MainWindow", "矩形"))
        self.comboBox.setItemText(2, _translate("MainWindow", "三角形"))
        self.comboBox.setItemText(3, _translate("MainWindow", "任意四边形"))
        self.label_2.setText(_translate("MainWindow", "半 径 R:"))
        self.label_4.setText(_translate("MainWindow", " 边   1:"))
        self.label_5.setText(_translate("MainWindow", " 边   2:"))
        self.label_6.setText(_translate("MainWindow", " 边   3:"))
        self.label_7.setText(_translate("MainWindow", " 边   4:"))
        self.label_8.setText(_translate("MainWindow", " 角  度:"))
        self.label_3.setText(_translate("MainWindow", "面积:"))
        self.label_9.setText(_translate("MainWindow", "周长:"))
        self.pushButton.setText(_translate("MainWindow", "开始计算"))
        self.pushButton_2.setText(_translate("MainWindow", "刷新清零"))
        self.pushButton_3.setText(_translate("MainWindow", "关于"))

    def operate(self):
        if self.comboBox.currentText() == "圆形":
            x1 = int(self.lineEdit.text())
            self.lineEdit_7.setText(str(Round(x1).area()))
            self.lineEdit_8.setText(str(Round(x1).girth()))

        elif self.comboBox.currentText() == "矩形":
            x1 = int(self.lineEdit_2.text())
            x2 = int(self.lineEdit_3.text())
            self.lineEdit_7.setText(str(Rectangle(x1, x2).area()))
            self.lineEdit_8.setText(str(Rectangle(x1, x2).girth()))

        elif self.comboBox.currentText() == "三角形":
            x1 = int(self.lineEdit_2.text())
            x2 = int(self.lineEdit_3.text())
            x3 = int(self.lineEdit_4.text())
            self.lineEdit_7.setText(str(Triangle(x1, x2, x3).area()))
            self.lineEdit_8.setText(str(Triangle(x1, x2, x3).girth()))

        elif self.comboBox.currentText() == "任意四边形":
            x1 = int(self.lineEdit_2.text())
            x2 = int(self.lineEdit_3.text())
            x3 = int(self.lineEdit_4.text())
            x4 = int(self.lineEdit_5.text())
            x5 = int(self.lineEdit_6.text())
            self.lineEdit_7.setText(str(Guadrilateral(x1, x2, x3, x4, x5).area()))
            self.lineEdit_8.setText(str(Guadrilateral(x1, x2, x3, x4, x5).girth()))

    def change(self):
        if self.comboBox.currentText() == "圆形":
            self.lineEdit.setReadOnly(0)
            self.lineEdit_2.setReadOnly(1)
            self.lineEdit_3.setReadOnly(1)
            self.lineEdit_4.setReadOnly(1)
            self.lineEdit_5.setReadOnly(1)
            self.lineEdit_6.setReadOnly(1)

        elif self.comboBox.currentText() == "矩形":
            self.lineEdit.setReadOnly(1)
            self.lineEdit_2.setReadOnly(0)
            self.lineEdit_3.setReadOnly(0)
            self.lineEdit_4.setReadOnly(1)
            self.lineEdit_5.setReadOnly(1)
            self.lineEdit_6.setReadOnly(1)

        elif self.comboBox.currentText() == "三角形":
            self.lineEdit.setReadOnly(1)
            self.lineEdit_2.setReadOnly(0)
            self.lineEdit_3.setReadOnly(0)
            self.lineEdit_4.setReadOnly(0)
            self.lineEdit_5.setReadOnly(1)
            self.lineEdit_6.setReadOnly(1)

        elif self.comboBox.currentText() == "任意四边形":
            self.lineEdit.setReadOnly(1)
            self.lineEdit_2.setReadOnly(0)
            self.lineEdit_3.setReadOnly(0)
            self.lineEdit_4.setReadOnly(0)
            self.lineEdit_5.setReadOnly(0)
            self.lineEdit_6.setReadOnly(0)

    def renovate(self):
        self.lineEdit.clear()
        self.lineEdit_2.clear()
        self.lineEdit_3.clear()
        self.lineEdit_4.clear()
        self.lineEdit_5.clear()
        self.lineEdit_6.clear()
        self.lineEdit_7.clear()
        self.lineEdit_8.clear()

    def info(self):
        QMessageBox.information(None, '说明', '请计算前先选择你要计算图形的名称,每次计算完成后点击刷新清零按钮', QMessageBox.Ok)

if __name__ == '__main__':
    app =QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

下面就是功能函数页面figure.py详细代码如下:

import math


class Round(): #圆形
    def __init__(self, R):
        self.R = R

    def area(self):
        return round(self.R * self.R * 3.14, 2)

    def girth(self):
        return round(self.R * 2 * 3.14, 2)


class Rectangle():#矩形
    def __init__(self, length, width):
        self.length = length
        self.width = width

    def area(self):
        return self.length * self.width

    def girth(self):
        return (self.length + self.width) * 2


class Triangle():#三角形
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def area(self):
        l = (self.a + self.b + self.c)/2
        return round(math.sqrt(l * (l - self.a) * (l - self.b) * (l - self.c)), 2)  #round保留2为小数

    def girth(self):
        return self.a + self.b + self.c


class Guadrilateral():#任意四边形
    def __init__(self, a, b, c, d, angle):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.angle = angle

    def area(self):
        l = (self.a + self.b + self.c + self.d)/2
        return round(math.sqrt((l - self.a) * (l - self.b) * (l - self.c) * (l - self.d) -
                               self.a * self.b * self.c * self.d
                               * math.pow(math.cos(math.radians(self.angle)), 2)), 2) #pow函数幂次方radians弧度转换为角度

    def girth(self):
        return self.a + self.b + self.c + self.d

运行图片

标签:程序实现,QtCore,self,label,Python,控制台,QtWidgets,MainWindow,lineEdit
来源: https://blog.csdn.net/nanxiang11/article/details/112793399

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有