当前位置:首页>python>22.Python实战__海伦公式 计算三角形面积

22.Python实战__海伦公式 计算三角形面积

  • 2026-10-11 08:16:15
22.Python实战__海伦公式 计算三角形面积
    今天实战题目是,用Python结合GUI模块写一个用“海伦公式”计算三角形面积的计算器,海伦公式内容是,已知三角形的三边a, b, c,则三角形面积为:
S= sqrt(p×(p-a)×(p-b)×(p-c))
其中 p= (a+b+c)/2
运行效果如下
    其实今天的题目跟上期的内容基本是一样的,大家可以比较下,用到的GUI控件都一样:1)标签 QLabel
2)单行文本输入框 QLineEdit
3)按钮 QPushButton
4)网格布局 QGridLayout
5)这节新增一个控件,信息弹窗:
QMessageBox.warning( )  警告弹窗
QMessageBox控件里面有很多类型的弹窗,警告只是其中一种,不过用法都一样,一般接受三个参数就可以了,当然还有其它参数。
QMessageBox.warning(self, "错误警告", "三边不能构成三角形!")
1)第一个参数,就是parent,就是绑定在那个父控件,一般是self;
2)第二个参数,就是一个字符串,是窗口的标题;
2)第三个参数,也是一个字符串,是窗口的提示内容;
控件效果如下
上节的BMI计算器
    通过比较可以发现,都是采用标签控件、单行文本输入框、计算按钮计算结果后设置给控件并展示出来;而且他们的代码结构大部分也是一样的,主要的区别就是用来计算结果的 槽函数不同而已;
附原代码:
一、先导入用到的模块
from PySide6.QtCore import Qtfrom PySide6.QtWidgets import QWidget, QApplication,      QPushButton, QGridLayout, QLabel, QLineEdit,      QMessageBox
二、创建类及初始化方法,在初始化方法中设置窗口标题,设置窗口尺寸,创建主布局(网格布局)并设置各列的宽度;同时在后面运行setup_01( )实例方法,在setup_01中创建各控件;
class Window(QWidget):      def __init__(self):            super().__init__()          # 设置窗口标题      self.setWindowTitle("海伦公式计算三角形面积")     # 设置窗口尺寸           self.resize(350, 210)            # 创建网格布局            self.main_layout = QGridLayout()            # 设置网格布局为主布局            self.setLayout(self.main_layout)            # 设置布局的水平和垂直间隔距离            self.main_layout.setHorizontalSpacing(15)            self.main_layout.setVerticalSpacing(15)            # 设置各列宽度比例    self.main_layout.setColumnStretch(0, 1)            self.main_layout.setColumnStretch(1, 3)            self.main_layout.setAlignment(Qt.AlignTop)     # 运行下面的setup_01()实例方法           self.setup_01()
三、创建setup_01()实例方法
def setup_01(self):      # 创建三条边标签和输入框      self.label_01 = QLabel("边长 a", self)      self.line_01 = QLineEdit(self)      self.label_02 = QLabel("边长 b", self)      self.line_02 = QLineEdit(self)      self.label_03 = QLabel("边长 b", self)      self.line_03 = QLineEdit(self)      # 创建计算结果标签和输入框      self.label_04 = QLabel("面积 S", self)      self.line_04 = QLineEdit()      # 创建计算按钮      self.btn = QPushButton("计 算", self)      self.btn.clicked.connect(self.calculate)      # 使用for循环使控件文字都居中显示      widgets = [self.line_01, self.line_02, self.line_03, self.line_04]      for widget in widgets:            widget.setAlignment(Qt.AlignmentFlag.AlignCenter)      # 把3条边的标签和输入框添加到网格布局      # 边长a      self.main_layout.addWidget(self.label_01, 0, 0)      self.main_layout.addWidget(self.line_01, 0, 1)      # 边长b      self.main_layout.addWidget(self.label_02, 1, 0)      self.main_layout.addWidget(self.line_02, 1, 1)      # 边长c      self.main_layout.addWidget(self.label_03, 2, 0)      self.main_layout.addWidget(self.line_03, 2, 1)      # 面积S      self.main_layout.addWidget(self.label_04, 3, 0)      self.main_layout.addWidget(self.line_04, 3, 1)      # 把计算按钮添加到布局      self.main_layout.addWidget(self.btn, 4, 0, 1, -1)
四、创建计算按钮的槽函数calculate
def calculate(self):      # 拿到输入框内的数据      # 获取三条边a/b/c数值,并转换为浮点型数据      a = float(self.line_01.text())      b = float(self.line_02.text())      c = float(self.line_03.text())      # 先判断二边之各大于第三边      if a + b > c and a + c > b and b + c > a:            p = (a + b + c) / 2            s = (p * (p - a) * (p - b) * (p - c)) ** 0.5            s = round(s, 2)  # 结果取2位有效数字            self.line_04.setText(str(s))      else:            QMessageBox.warning(self, "错误警告", "三边不能构成三角形!")            return
五、最后运行函数
if __name__ == "__main__":      import sys      app = QApplication(sys.argv)      win = Window()      win.show()      sys.exit(app.exec())
    通过对比,能看出,像这种小程序,基本都是一个模板,里面最重要的部分其实就是 槽函数,槽函数是负责处理计算逻辑 和功能实现的。其它的都是很简单的东西,只要你能自己敲几遍代码就能吃透了。

最新文章

随机文章