写了一个程序来计算面积。没有错误,但是当我点击计算区域时,结果没有显示在按钮旁边的标签中。
我做错了什么?
import sys
from PyQt6.QtWidgets import *
import math
class Pl(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle('MMM')
self.resize(500, 500)
self.Shape_cb = QComboBox(self)
self.lbl = QLabel('Height', self)
self.lbl2 = QLabel('Width', self)
self.sq_heigh_spx = QSpinBox(self)
self.sq_heigh_spx.setValue(10)
self.sq_heigh_spx.setMinimum(10)
self.sq_heigh_spx.setMaximum(9999)
self.sq_width_spx = QSpinBox(self)
self.sq_width_spx.setValue(10)
self.sq_width_spx.setMinimum(10)
self.sq_width_spx.setMaximum(9999)
self.lbl3 = QLabel('Radius', self)
self.cr_radius_spx = QSpinBox(self)
self.cr_radius_spx.setValue(10)
self.cr_radius_spx.setMinimum(10)
self.cr_radius_spx.setMaximum(9999)
self.btn = QPushButton('Compute', self)
self.lbl4_result = QLabel('Result ', self)
self.group = QGroupBox('select shape', self)
self.group.resize(490, 100)
self.group.move(5, 0)
self.group2 = QVBoxLayout(self)
self.group2.addWidget(self.Shape_cb)
self.group.setLayout(self.group2)
self.sq_gb = QGroupBox('Square', self)
self.sq_gb.move(5, 120)
self.sq_gb.resize(490, 100)
self.sq_gb.setAlignment(4)
self.Shape_cb.addItem('Square')
self.Shape_cb.addItem('Circle')
self.gr = QFormLayout(self)
self.sq_gb.setLayout(self.gr)
self.gr.addRow(self.lbl, self.sq_heigh_spx)
self.gr.addRow(self.lbl2, self.sq_width_spx)
self.gr.setHorizontalSpacing(50)
self.cr_gb = QGroupBox('Circle', self)
self.cr_gb.move(5, 250)
self.cr_gb.resize(490, 100)
self.cr_gb.setAlignment(4)
self.gr2 = QFormLayout(self)
self.cr_gb.setLayout(self.gr2)
self.gr2.addRow(self.lbl3, self.cr_radius_spx)
self.btn.move(200, 400)
self.lbl4_result.move(50, 450)
self.btn.clicked.connect(self.compute)
# Connects
self.Shape_cb.currentIndexChanged.connect(self.update_UI)
# Start
self.update_UI()
def update_UI(self):
self.sq_gb.setVisible(self.Shape_cb.currentIndex() == 0)
self.cr_gb.setVisible(self.Shape_cb.currentIndex() == 1)
def compute(self):
if self.Shape_cb.currentIndex == 0:
self.computeSquare()
elif self.Shape_cb.currentIndex == 1:
self.computeCircle()
def computeSquare(self):
w = self.sq_width_spx.value()
h = self.sq_heigh_spx.value()
area = w * h
self.showResult(area)
def computeCircle(self):
r = self.cr_radius_spx.value()
area = math.pi * (r ** 2)
self.showResult(area)
def showResult(self, result):
self.lbl4_result.setText('Результат: %s' % result)
if __name__ == '__main__':
app = QApplication(sys.argv)
pl = Pl()
pl.show()
sys.exit(app.exec())
我已经为您标记了我进行更改的地方。