Обнуление значений при переключении comboBox

Задача заключается в том, чтобы при выборе другого значения в ComboBox все значения radiobutton обнулялись, а прошлые записывались.

Например если comboBox index = 0(organic), то мы выбираем все значения RadioButton для вычисления коэффициента, этот коэффициент куда то записывается,
дальше при выборе comboBox index = 1(Semidetach) эта же таблица обнулялась и коэффициент был уже бы другой и он тоже бы записывался для дальнейших операций.

И если можно как-то сократить код, буду очень признателен, я просто новичок, но мне очень интересно!

from PyQt5 import QtCore, QtGui, QtWidgets



        self.Button_result.setText(_translate("MainWindow", "Результат"))
        self.radioButton_4.setText(_translate("MainWindow", "0.75"))
        self.radioButton_3.setText(_translate("MainWindow", "0.88"))
        self.radioButton_2.setText(_translate("MainWindow", "1"))
        self.radioButton_6.setText(_translate("MainWindow", "1.15"))
        self.radioButton_5.setText(_translate("MainWindow", "1.4"))
        self.radioButton.setText(_translate("MainWindow", "-"))
        self.radioButton_7.setText(_translate("MainWindow", "-"))
        self.radioButton_8.setText(_translate("MainWindow", "0.94"))
        self.radioButton_9.setText(_translate("MainWindow", "1"))
        self.radioButton_10.setText(_translate("MainWindow", "1.08"))
        self.radioButton_11.setText(_translate("MainWindow", "1.16"))
        self.radioButton_12.setText(_translate("MainWindow", "-"))
        self.radioButton_13.setText(_translate("MainWindow", "0.7"))
        self.radioButton_14.setText(_translate("MainWindow", "0.85"))
        self.radioButton_15.setText(_translate("MainWindow", "1"))
        self.radioButton_16.setText(_translate("MainWindow", "1.15"))
        self.radioButton_17.setText(_translate("MainWindow", "1.3"))
        self.radioButton_18.setText(_translate("MainWindow", "1.65"))
        self.radioButton_19.setText(_translate("MainWindow", "-"))
        self.radioButton_20.setText(_translate("MainWindow", "-"))
        self.radioButton_21.setText(_translate("MainWindow", "1"))
        self.radioButton_22.setText(_translate("MainWindow", "1.11"))
        self.radioButton_23.setText(_translate("MainWindow", "1.3"))
        self.radioButton_24.setText(_translate("MainWindow", "1.66"))
        self.radioButton_31.setText(_translate("MainWindow", "-"))
        self.radioButton_32.setText(_translate("MainWindow", "-"))
        self.radioButton_33.setText(_translate("MainWindow", "1"))
        self.radioButton_34.setText(_translate("MainWindow", "1.06"))
        self.radioButton_35.setText(_translate("MainWindow", "1.21"))
        self.radioButton_36.setText(_translate("MainWindow", "1.56"))
        self.radioButton_37.setText(_translate("MainWindow", "-"))
        self.radioButton_38.setText(_translate("MainWindow", "0.87"))
        self.radioButton_39.setText(_translate("MainWindow", "1"))
        self.radioButton_40.setText(_translate("MainWindow", "1.15"))
        self.radioButton_41.setText(_translate("MainWindow", "1.3"))
        self.radioButton_42.setText(_translate("MainWindow", "-"))
        self.radioButton_43.setText(_translate("MainWindow", "-"))
        self.radioButton_44.setText(_translate("MainWindow", "0.87"))
        self.radioButton_45.setText(_translate("MainWindow", "1"))
        self.radioButton_46.setText(_translate("MainWindow", "1.07"))
        self.radioButton_47.setText(_translate("MainWindow", "1.15"))
        self.radioButton_48.setText(_translate("MainWindow", "-"))
        self.radioButton_49.setText(_translate("MainWindow", "1.46"))
        self.radioButton_50.setText(_translate("MainWindow", "1.19"))
        self.radioButton_51.setText(_translate("MainWindow", "1"))
        self.radioButton_52.setText(_translate("MainWindow", "0.86"))
        self.radioButton_53.setText(_translate("MainWindow", "0.71"))
        self.radioButton_54.setText(_translate("MainWindow", "-"))
        self.radioButton_55.setText(_translate("MainWindow", "1.29"))
        self.radioButton_56.setText(_translate("MainWindow", "1.13"))
        self.radioButton_57.setText(_translate("MainWindow", "1"))
        self.radioButton_58.setText(_translate("MainWindow", "0.91"))
        self.radioButton_59.setText(_translate("MainWindow", "0.82"))
        self.radioButton_60.setText(_translate("MainWindow", "-"))
        self.radioButton_61.setText(_translate("MainWindow", "1.42"))
        self.radioButton_62.setText(_translate("MainWindow", "1.17"))
        self.radioButton_63.setText(_translate("MainWindow", "1"))
        self.radioButton_64.setText(_translate("MainWindow", "0.86"))
        self.radioButton_65.setText(_translate("MainWindow", "0.7"))
        self.radioButton_66.setText(_translate("MainWindow", "-"))
        self.radioButton_67.setText(_translate("MainWindow", "1.21"))
        self.radioButton_68.setText(_translate("MainWindow", "1.1"))
        self.radioButton_69.setText(_translate("MainWindow", "1"))
        self.radioButton_70.setText(_translate("MainWindow", "0.9"))
        self.radioButton_71.setText(_translate("MainWindow", "-"))
        self.radioButton_72.setText(_translate("MainWindow", "-"))
        self.radioButton_73.setText(_translate("MainWindow", "1.14"))
        self.radioButton_74.setText(_translate("MainWindow", "1.07"))
        self.radioButton_75.setText(_translate("MainWindow", "1"))
        self.radioButton_76.setText(_translate("MainWindow", "0.95"))
        self.radioButton_77.setText(_translate("MainWindow", "-"))
        self.radioButton_78.setText(_translate("MainWindow", "-"))
        self.radioButton_79.setText(_translate("MainWindow", "1.24"))
        self.radioButton_80.setText(_translate("MainWindow", "1.1"))
        self.radioButton_81.setText(_translate("MainWindow", "1"))
        self.radioButton_82.setText(_translate("MainWindow", "0.91"))
        self.radioButton_83.setText(_translate("MainWindow", "0.82"))
        self.radioButton_84.setText(_translate("MainWindow", "-"))
        self.radioButton_85.setText(_translate("MainWindow", "1.24"))
        self.radioButton_86.setText(_translate("MainWindow", "1.1"))
        self.radioButton_87.setText(_translate("MainWindow", "1"))
        self.radioButton_88.setText(_translate("MainWindow", "0.91"))
        self.radioButton_89.setText(_translate("MainWindow", "0.83"))
        self.radioButton_90.setText(_translate("MainWindow", "-"))
        self.radioButton_91.setText(_translate("MainWindow", "1.23"))
        self.radioButton_92.setText(_translate("MainWindow", "1.08"))
        self.radioButton_93.setText(_translate("MainWindow", "1"))
        self.radioButton_94.setText(_translate("MainWindow", "1.04"))
        self.radioButton_95.setText(_translate("MainWindow", "1.1"))
        self.radioButton_96.setText(_translate("MainWindow", "-"))
        self.label_28.setToolTip(_translate("MainWindow", "<html><head/><body><p align=\"center\">требуемая надежность ПО</p></body></html>"))
        self.label_28.setWhatsThis(_translate("MainWindow", "<html><head/><body><p align=\"justify\"><br/></p></body></html>"))
        self.label_28.setText(_translate("MainWindow", "<html><head/><body><p align=\"center\">Трудоемкость в человеко-месяцах</p></body></html>"))
    def add_functions(self):
        self.Button_result.clicked.connect(self.clicked)

    def clicked(self):
        res = 0
        if self.radioButton_4.isChecked():
            res = float(self.radioButton_4.text())
        if self.radioButton_3.isChecked():
            res = float(self.radioButton_3.text())
        if self.radioButton_2.isChecked():
            res = float(self.radioButton_2.text())
        if self.radioButton_6.isChecked():
            res = float(self.radioButton_6.text())
        if self.radioButton_5.isChecked():
            res = float(self.radioButton_5.text())
        if self.radioButton_8.isChecked():
            res = res * float(self.radioButton_8.text())
        if self.radioButton_9.isChecked():
            res = res * float(self.radioButton_9.text())
        if self.radioButton_10.isChecked():
            res = res * float(self.radioButton_10.text())
        if self.radioButton_11.isChecked():
            res = res * float(self.radioButton_11.text())
        if self.radioButton_13.isChecked():
            res = res * float(self.radioButton_13.text())
        if self.radioButton_14.isChecked():
            res = res * float(self.radioButton_14.text())
        if self.radioButton_15.isChecked():
            res = res * float(self.radioButton_15.text())
        if self.radioButton_16.isChecked():
            res = res * float(self.radioButton_16.text())
        if self.radioButton_17.isChecked():
            res = res * float(self.radioButton_17.text())
        if self.radioButton_18.isChecked():
            res = res * float(self.radioButton_18.text())
        if self.radioButton_21.isChecked():
            res = res * float(self.radioButton_21.text())
        if self.radioButton_22.isChecked():
            res = res * float(self.radioButton_22.text())
        if self.radioButton_23.isChecked():
            res = res * float(self.radioButton_23.text())
        if self.radioButton_24.isChecked():
            res = res * float(self.radioButton_24.text())
        if self.radioButton_33.isChecked():
            res = res * float(self.radioButton_33.text())
        if self.radioButton_34.isChecked():
            res = res * float(self.radioButton_34.text())
        if self.radioButton_35.isChecked():
            res = res * float(self.radioButton_35.text())
        if self.radioButton_36.isChecked():
            res = res * float(self.radioButton_36.text())
        if self.radioButton_38.isChecked():
            res = res * float(self.radioButton_38.text())
        if self.radioButton_39.isChecked():
            res = res * float(self.radioButton_39.text())
        if self.radioButton_40.isChecked():
            res = res * float(self.radioButton_40.text())
        if self.radioButton_41.isChecked():
            res = res * float(self.radioButton_41.text())
        if self.radioButton_44.isChecked():
            res = res * float(self.radioButton_44.text())
        if self.radioButton_45.isChecked():
            res = res * float(self.radioButton_45.text())
        if self.radioButton_46.isChecked():
            res = res * float(self.radioButton_46.text())
        if self.radioButton_47.isChecked():
            res = res * float(self.radioButton_47.text())
        if self.radioButton_49.isChecked():
            res = res * float(self.radioButton_49.text())
        if self.radioButton_50.isChecked():
            res = res * float(self.radioButton_50.text())
        if self.radioButton_51.isChecked():
            res = res * float(self.radioButton_51.text())
        if self.radioButton_52.isChecked():
            res = res * float(self.radioButton_52.text())
        if self.radioButton_53.isChecked():
            res = res * float(self.radioButton_53.text())
        if self.radioButton_55.isChecked():
            res = res * float(self.radioButton_55.text())
        if self.radioButton_56.isChecked():
            res = res * float(self.radioButton_56.text())
        if self.radioButton_57.isChecked():
            res = res * float(self.radioButton_57.text())
        if self.radioButton_58.isChecked():
            res = res * float(self.radioButton_58.text())
        if self.radioButton_59.isChecked():
            res = res * float(self.radioButton_59.text())
        if self.radioButton_61.isChecked():
            res = res * float(self.radioButton_61.text())
        if self.radioButton_62.isChecked():
            res = res * float(self.radioButton_62.text())
        if self.radioButton_63.isChecked():
            res = res * float(self.radioButton_63.text())
        if self.radioButton_64.isChecked():
            res = res * float(self.radioButton_64.text())
        if self.radioButton_65.isChecked():
            res = res * float(self.radioButton_65.text())
        if self.radioButton_67.isChecked():
            res = res * float(self.radioButton_67.text())
        if self.radioButton_68.isChecked():
            res = res * float(self.radioButton_68.text())
        if self.radioButton_69.isChecked():
            res = res * float(self.radioButton_69.text())
        if self.radioButton_70.isChecked():
            res = res * float(self.radioButton_70.text())
        if self.radioButton_73.isChecked():
            res = res * float(self.radioButton_73.text())
        if self.radioButton_74.isChecked():
            res = res * float(self.radioButton_74.text())
        if self.radioButton_75.isChecked():
            res = res * float(self.radioButton_75.text())
        if self.radioButton_76.isChecked():
            res = res * float(self.radioButton_76.text())
        if self.radioButton_79.isChecked():
            res = res * float(self.radioButton_79.text())
        if self.radioButton_80.isChecked():
            res = res * float(self.radioButton_80.text())
        if self.radioButton_81.isChecked():
            res = res * float(self.radioButton_81.text())
        if self.radioButton_82.isChecked():
            res = res * float(self.radioButton_82.text())
        if self.radioButton_83.isChecked():
            res = res * float(self.radioButton_83.text())
        if self.radioButton_85.isChecked():
            res = res * float(self.radioButton_85.text())
        if self.radioButton_86.isChecked():
            res = res * float(self.radioButton_86.text())
        if self.radioButton_87.isChecked():
            res = res * float(self.radioButton_87.text())
        if self.radioButton_88.isChecked():
            res = res * float(self.radioButton_88.text())
        if self.radioButton_89.isChecked():
            res = res * float(self.radioButton_89.text())
        if self.radioButton_91.isChecked():
            res = res * float(self.radioButton_91.text())
        if self.radioButton_92.isChecked():
            res = res * float(self.radioButton_92.text())
        if self.radioButton_93.isChecked():
            res = res * float(self.radioButton_93.text())
        if self.radioButton_94.isChecked():
            res = res * float(self.radioButton_94.text())
        if self.radioButton_95.isChecked():
            res = res * float(self.radioButton_95.text())
        if self.radioButton_96.isChecked():
            res = res * float(self.radioButton_96.text())
        text = self.textEdit.toPlainText()
        if self.comboBox.currentIndex() == 0:
            result = 3.2*(float(text))**1.05*res
            self.textBrowser_4.setText(str(float('{0:.3f}'.format(result))))
        if self.comboBox.currentIndex() == 1:
            result = 3.0 * (float(text)) ** 1.12 * res
            self.textBrowser_4.setText(str(float('{0:.3f}'.format(result))))
        if self.comboBox.currentIndex() == 2:
            result = 2.8 * (float(text)) ** 1.20 * res
            self.textBrowser_4.setText(str(float('{0:.3f}'.format(result))))
        if self.comboBox.currentIndex() == 0:
            trudoemkost = 2.4 * (float(text)) ** 1.05
            srok = 2.5 * trudoemkost **0.38
            razrab = trudoemkost/srok
            self.textBrowser.setText(str(float('{0:.3f}'.format(trudoemkost))))
            self.textBrowser_2.setText(str(float('{0:.3f}'.format(srok))))
            self.textBrowser_3.setText(str(float('{0:.3f}'.format(razrab))))
        if self.comboBox.currentIndex() == 1:
            trudoemkost = 3 * (float(text)) ** 1.12
            srok = 2.5 * trudoemkost **0.35
            razrab = trudoemkost/srok
            self.textBrowser.setText(str(float('{0:.3f}'.format(trudoemkost))))
            self.textBrowser_2.setText(str(float('{0:.3f}'.format(srok))))
            self.textBrowser_3.setText(str(float('{0:.3f}'.format(razrab))))
        if self.comboBox.currentIndex() == 2:
            trudoemkost = 3.6 * (float(text)) ** 1.2
            srok = 2.5 * trudoemkost **0.32
            razrab = trudoemkost/srok
            self.textBrowser.setText(str(float('{0:.3f}'.format(trudoemkost))))
            self.textBrowser_2.setText(str(float('{0:.3f}'.format(srok))))
            self.textBrowser_3.setText(str(float('{0:.3f}'.format(razrab))))

        #result = float(text) + res
        #self.textBrowser_4.setText(str(float('{0:.3f}'.format(result))))


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

введите сюда описание изображения


Ответы (1 шт):

Автор решения: S. Nick

Для того чтобы получать быстрые и правильные ответы, вам надо научиться составлять минимально-воспроизводимые примеры. То что вы предоставили совсем никуда не годиться.

Я попробовал реализовать вашу задумку как я ее понял, на примере моего ответа на ваш предыдущий вопрос.

Вы выбираете с каждой строки radioButton и нажимаете кнопку - это привязка radioButton's к Item'у из comboBox.

При выборе какого-то Item'а вы выполните некое действие, например деление и получите результат в textBrowser или получите сообщение о невозможности выполнить действие из-за отсутствия привязки radioButton's к Item'у.

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(332, 337)
        self.radioButton = QtWidgets.QRadioButton()
        self.radioButton.setGeometry(QtCore.QRect(30, 30, 82, 17))
        self.radioButton.setObjectName("radioButton")
        self.buttonGroup = QtWidgets.QButtonGroup(Dialog)
        self.buttonGroup.setObjectName("buttonGroup")
        self.buttonGroup.addButton(self.radioButton)
        self.radioButton_2 = QtWidgets.QRadioButton(Dialog)
        self.radioButton_2.setGeometry(QtCore.QRect(120, 30, 82, 17))
        self.radioButton_2.setObjectName("radioButton_2")
        self.buttonGroup.addButton(self.radioButton_2)
        self.radioButton_3 = QtWidgets.QRadioButton(Dialog)
        self.radioButton_3.setGeometry(QtCore.QRect(210, 30, 82, 17))
        self.radioButton_3.setObjectName("radioButton_3")
        self.buttonGroup.addButton(self.radioButton_3)
        
        self.radioButton_4 = QtWidgets.QRadioButton(Dialog)
        self.radioButton_4.setGeometry(QtCore.QRect(20, 60, 82, 17))
        self.radioButton_4.setObjectName("radioButton_4")
        self.buttonGroup_2 = QtWidgets.QButtonGroup(Dialog)
        self.buttonGroup_2.setObjectName("buttonGroup_2")
        self.buttonGroup_2.addButton(self.radioButton_4)
        self.radioButton_5 = QtWidgets.QRadioButton(Dialog)
        self.radioButton_5.setGeometry(QtCore.QRect(120, 60, 82, 17))
        self.radioButton_5.setObjectName("radioButton_5")
        self.buttonGroup_2.addButton(self.radioButton_5)
        self.radioButton_6 = QtWidgets.QRadioButton(Dialog)
        self.radioButton_6.setGeometry(QtCore.QRect(220, 60, 82, 17))
        self.radioButton_6.setObjectName("radioButton_6")
        self.buttonGroup_2.addButton(self.radioButton_6)
        
        self.comboBox = QtWidgets.QComboBox(Dialog)
        self.comboBox.setGeometry(QtCore.QRect(200, 200, 75, 23))
        self.comboBox.setObjectName("comboBox")
        
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(50, 200, 140, 23))
        self.pushButton.setObjectName("pushButton")
        
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.radioButton.setText(_translate("Dialog", "2"))
        self.radioButton_2.setText(_translate("Dialog", "3"))
        self.radioButton_3.setText(_translate("Dialog", "5"))
        self.radioButton_4.setText(_translate("Dialog", "1"))
        self.radioButton_5.setText(_translate("Dialog", "4"))
        self.radioButton_6.setText(_translate("Dialog", "6"))
#        self.label.setText(_translate("Dialog", "TextLabel"))
        self.pushButton.setText(_translate("Dialog", "PushButton"))


class MainWindow(QtWidgets.QDialog, Ui_Dialog):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.textBrowser = QtWidgets.QTextBrowser(self)                        # +++
        self.textBrowser.setGeometry(QtCore.QRect(20, 90, 300, 105)) 
        
        self.comboBox.addItems(["Item 1", "Item 2", "Item 3", "Item 4"])       # +++
        self.comboBox.currentTextChanged.connect(self.comboBox_changed)        # +++

        self.pushButton.setText("Привязать rb's к Item cb")
        self.pushButton.clicked.connect(self.clicked)
        
        self.radioButtons = self.findChildren(QtWidgets.QRadioButton)
        
        self.my_dict = {}                                                      # +++

    def comboBox_changed(self, text):                                          # +++
        print(f'\ndef comboBox_changed(self, text): {text}') 
        
        rez = self.my_dict.get(text)
        if not rez or len(rez) == 1:
            msg = QtWidgets.QMessageBox.information(
                self, 
                'Внимание', 
                f'Нет выбранных "radioButtons" для "{text}". '
                f'Сделайте выбор "radioButtons" и нажмите кнопку. '
            )
            self.textBrowser.setText('')
        else:
            res = float(rez[0]) / float(rez[1])
            self.textBrowser.setText(f'{rez[0]} / {rez[1]} = {res:.3f}')

    def clicked(self):
        currentText = self.comboBox.currentText()
        print(f'\ncurrentText = {currentText}')  
        
        checked_radioButtons = []
        self.buttonGroup.setExclusive(False)
        self.buttonGroup_2.setExclusive(False)
        for rb in self.radioButtons:
            if rb.isChecked():
                checked_radioButtons.append(rb.text())
                rb.setChecked(False)                

        self.buttonGroup.setExclusive(True)
        self.buttonGroup_2.setExclusive(True)
        
        if not checked_radioButtons:
            msg = QtWidgets.QMessageBox.information(
                self, 
                'Внимание', 
                f'Выберите некотоые "radioButtons" для привязки к "{currentText}"'
            )
            self.textBrowser.setText('')
            
        self.my_dict[currentText] = checked_radioButtons    
                

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка