Обнуление значений при переключении 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 шт):
Для того чтобы получать быстрые и правильные ответы, вам надо научиться составлять минимально-воспроизводимые примеры. То что вы предоставили совсем никуда не годиться.
Я попробовал реализовать вашу задумку как я ее понял, на примере моего ответа на ваш предыдущий вопрос.
Вы выбираете с каждой строки 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())



