@Goshya

Как в PyQt5 понять, какой RadioButton сейчас отмечен?

Доброго времени суток! Суть в том, что мне нужно сделать конвертатор позиционных систем счисления в качестве школьного проекта, а времени до его защиты осталось мало (16 марта надо сдать) и времени на детальное изучение PyQt5 у меня нет, поэтому, как ваш будущий коллега, обращаюсь к вам за помощью. Проблема заключается в том, что не могу сделать так, чтобы программа считывала наличие активированного radioButton, пробовал и метод isChecked(), toggled() и много других, но программа либо ничего не делает, либо выдает ошибку. Интерфейс будущего конвертатора я уже создал (в приложении Qt Designer), а вот собственно и он:
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(857, 588)
        MainWindow.setMinimumSize(QtCore.QSize(857, 588))
        MainWindow.setStyleSheet("background-color: silver;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(160, 460, 191, 51))
        self.pushButton.setStyleSheet("QPushButton {\n"
"background-color: rgb(255, 255, 255);\n"
"font: 16pt \"MS Shell Dlg 2\";\n"
"border-radius: 25px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color:gray;\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgb(154, 171, 231);\n"
"\n"
"}\n"
"")
        self.pushButton.setObjectName("pushButton")
        self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(160, 150, 261, 271))
        self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.radioButton_5 = QtWidgets.QRadioButton(self.verticalLayoutWidget_2)
        self.radioButton_5.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_5.setObjectName("radioButton_5")
        self.verticalLayout_2.addWidget(self.radioButton_5)
        self.radioButton_4 = QtWidgets.QRadioButton(self.verticalLayoutWidget_2)
        self.radioButton_4.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_4.setObjectName("radioButton_4")
        self.verticalLayout_2.addWidget(self.radioButton_4)
        self.radioButton_6 = QtWidgets.QRadioButton(self.verticalLayoutWidget_2)
        self.radioButton_6.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_6.setObjectName("radioButton_6")
        self.verticalLayout_2.addWidget(self.radioButton_6)
        self.radioButton_3 = QtWidgets.QRadioButton(self.verticalLayoutWidget_2)
        self.radioButton_3.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_3.setObjectName("radioButton_3")
        self.verticalLayout_2.addWidget(self.radioButton_3)
        self.verticalLayoutWidget_3 = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(550, 150, 271, 271))
        self.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.radioButton_7 = QtWidgets.QRadioButton(self.verticalLayoutWidget_3)
        self.radioButton_7.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_7.setObjectName("radioButton_7")
        self.verticalLayout_3.addWidget(self.radioButton_7)
        self.radioButton_8 = QtWidgets.QRadioButton(self.verticalLayoutWidget_3)
        self.radioButton_8.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_8.setObjectName("radioButton_8")
        self.verticalLayout_3.addWidget(self.radioButton_8)
        self.radioButton_9 = QtWidgets.QRadioButton(self.verticalLayoutWidget_3)
        self.radioButton_9.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_9.setObjectName("radioButton_9")
        self.verticalLayout_3.addWidget(self.radioButton_9)
        self.radioButton_10 = QtWidgets.QRadioButton(self.verticalLayoutWidget_3)
        self.radioButton_10.setStyleSheet("font: 63 16pt \"Segoe UI\";")
        self.radioButton_10.setObjectName("radioButton_10")
        self.verticalLayout_3.addWidget(self.radioButton_10)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 230, 71, 101))
        self.label.setStyleSheet("font: 16pt \"Microsoft JhengHei UI\";")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(480, 230, 51, 101))
        self.label_2.setStyleSheet("font: 16pt \"Microsoft JhengHei UI\";")
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(20, 30, 801, 61))
        self.lineEdit.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"font: 16pt \"MS Shell Dlg 2\";\n"
"border-radius: 25px;")
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 857, 21))
        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", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Конвертировать"))
        self.radioButton_5.setText(_translate("MainWindow", "Шестнадцетиричной"))
        self.radioButton_4.setText(_translate("MainWindow", "Десятичной"))
        self.radioButton_6.setText(_translate("MainWindow", "Восьмеричной"))
        self.radioButton_3.setText(_translate("MainWindow", "Двоичной"))
        self.radioButton_7.setText(_translate("MainWindow", "Шестнадцетиричную"))
        self.radioButton_8.setText(_translate("MainWindow", "Десятичную"))
        self.radioButton_9.setText(_translate("MainWindow", "Восьмеричную"))
        self.radioButton_10.setText(_translate("MainWindow", "Двоичную"))
        self.label.setText(_translate("MainWindow", "FROM :"))
        self.label_2.setText(_translate("MainWindow", "IN :"))


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_())

А кому интересно, вот так выглядит моё убожество, к которому я пришел за 2 дня мониторинга интернета5e6687d2f0e88944396799.jpeg
Спасибо за внимание, надеюсь на вашу помощь!
  • Вопрос задан
  • 6445 просмотров
Пригласить эксперта
Ответы на вопрос 1
Пример кода https://pythonbasics.org/pyqt-radiobutton/
from PyQt5.QtWidgets import *
import sys

class Window(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        layout = QGridLayout()
        self.setLayout(layout)

        radiobutton = QRadioButton("Australia")
        radiobutton.setChecked(True)
        radiobutton.country = "Australia"
        radiobutton.toggled.connect(self.onClicked)
        layout.addWidget(radiobutton, 0, 0)

        radiobutton = QRadioButton("China")
        radiobutton.country = "China"
        radiobutton.toggled.connect(self.onClicked)
        layout.addWidget(radiobutton, 0, 1)

        radiobutton = QRadioButton("Japan")
        radiobutton.country = "Japan"
        radiobutton.toggled.connect(self.onClicked)
        layout.addWidget(radiobutton, 0, 2)

    def onClicked(self):
        radioButton = self.sender()
        if radioButton.isChecked():
            print("Country is %s" % (radioButton.country))

app = QApplication(sys.argv)
screen = Window()
screen.show()
sys.exit(app.exec_())


Если посмотреть в onClicked, то понятно, что метод .isChecked().
И в вашем коде я вижу создание окна, но не вижу никакого намёка на функционал.

PS: Меня пугает, что вы будущий коллега. Вы же откровенно говорите, что вы отложили всё на самый последний момент, и хотите выехать за счёт других людей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы