Проверка активности QRadioButton
Есть две QRadioButton. В зависимости от того, какая активна, при нажатии обычной кнопки, нужно вписывать в лейблы результат той или иной функции, вот только не знаю как проверять состояние радиокнопки.
from PyQt5 import QtCore, QtGui, QtWidgets
from smthg import parse_student, parse_teacher
class MainWindow(QtWidgets.QMainWindow):
widgets_stylesheet = "background: rgb(255, 255, 255);\n""font: 24pt \"MS Shell Dlg 2\";"
def __init__(self):
# Базовые настройки
super(MainWindow, self).__init__()
self.resize(1920, 1080)
self.setStyleSheet("background-color: rgb(255, 147, 84)")
self.CentralWidget = QtWidgets.QWidget(self)
self.CentralWidget.setObjectName("CentralWidget")
''' Контейнеры с расписанием '''
self.MondaySheduleLabel = QtWidgets.QLabel(self.CentralWidget)
self.MondaySheduleLabel.setGeometry(QtCore.QRect(30, 350, 341, 701))
self.MondaySheduleLabel.setText("")
self.MondaySheduleLabel.setStyleSheet(self.widgets_stylesheet)
self.TuesdaySheduleLabel = QtWidgets.QLabel(self.CentralWidget)
self.TuesdaySheduleLabel.setGeometry(QtCore.QRect(400, 350, 341, 701))
self.TuesdaySheduleLabel.setText("")
self.TuesdaySheduleLabelself.setStyleSheet(self.widgets_stylesheet)
self.WednesdaySheduleLabel = QtWidgets.QLabel(self.CentralWidget)
self.WednesdaySheduleLabel.setGeometry(QtCore.QRect(780, 350, 341, 701))
self.WednesdaySheduleLabel.setText("")
self.WednesdaySheduleLabel.setStyleSheet(self.widgets_stylesheet)
self.ThursdaySheduleLabel = QtWidgets.QLabel(self.CentralWidget)
self.ThursdaySheduleLabel.setGeometry(QtCore.QRect(1160, 350, 341, 701))
self.ThursdaySheduleLabel.setText("")
self.ThursdaySheduleLabel.setStyleSheet(self.widgets_stylesheet)
self.FridaySheduleLabel = QtWidgets.QLabel(self.CentralWidget)
self.FridaySheduleLabel.setGeometry(QtCore.QRect(1540, 350, 341, 701))
self.FridaySheduleLabel.setText("")
self.FridaySheduleLabel.setStyleSheet(self.widgets_stylesheet)
''' Радиокнопки '''
self.StudentRadioButton = QtWidgets.QRadioButton(self.CentralWidget)
self.StudentRadioButton.setGeometry(QtCore.QRect(430, 40, 271, 81))
self.StudentRadioButton.setMinimumSize(QtCore.QSize(271, 1))
self.StudentRadioButton.setStyleSheet(self.widgets_stylesheet)
self.TeacherRadioButton = QtWidgets.QRadioButton(self.CentralWidget)
self.TeacherRadioButton.setGeometry(QtCore.QRect(430, 170, 271, 81))
self.TeacherRadioButton.setMinimumSize(QtCore.QSize(271, 0))
self.TeacherRadioButton.setStyleSheet(self.widgets_stylesheet)
''' Надписи '''
self.MondayLabel = QtWidgets.QLabel(self.CentralWidget)
self.MondayLabel.setGeometry(QtCore.QRect(100, 290, 201, 51))
self.TuesdayLabel = QtWidgets.QLabel(self.CentralWidget)
self.TuesdayLabel.setGeometry(QtCore.QRect(470, 290, 201, 51))
self.WednesdayLabel = QtWidgets.QLabel(self.CentralWidget)
self.WednesdayLabel.setGeometry(QtCore.QRect(850, 290, 201, 51))
self.ThursdayLabel = QtWidgets.QLabel(self.CentralWidget)
self.ThursdayLabel.setGeometry(QtCore.QRect(1230, 290, 201, 51))
self.ThursdayLabel.setStyleSheet(self.widgets_stylesheet)
self.FridayLabel = QtWidgets.QLabel(self.CentralWidget)
self.FridayLabel.setGeometry(QtCore.QRect(1610, 290, 201, 51))
self.FridayLabel.setStyleSheet(self.widgets_stylesheet)
self.ClassLabel = QtWidgets.QLabel(self.CentralWidget)
self.ClassLabel.setGeometry(QtCore.QRect(970, 40, 251, 81))
self.ClassLabel.setStyleSheet(self.widgets_stylesheet)
self.ClassLabel.setObjectName("ClassLabel")
self.TeacherLabel = QtWidgets.QLabel(self.CentralWidget)
self.TeacherLabel.setGeometry(QtCore.QRect(790, 170, 431, 81))
self.TeacherLabel.setStyleSheet(self.widgets_stylesheet)
self.TeacherLabel.setObjectName("TeacherLabel")
''' Окна ввода '''
self.ClassValueLineEdit = QtWidgets.QLineEdit(self.CentralWidget)
self.ClassValueLineEdit.setGeometry(QtCore.QRect(1260, 40, 81, 81))
self.ClassValueLineEdit.setStyleSheet(self.widgets_stylesheet)
self.ClassValueLineEdit.setText("")
self.ClassValueLineEdit.setObjectName("ClassValueLineEdit")
self.TeacherValueLineEdit = QtWidgets.QLineEdit(self.CentralWidget)
self.TeacherValueLineEdit.setGeometry(QtCore.QRect(1260, 170, 231, 81))
self.TeacherValueLineEdit.setStyleSheet(self.widgets_stylesheet)
self.TeacherValueLineEdit.setText("123")
self.TeacherValueLineEdit.setObjectName("TeacherValueLineEdit")
''' Иконка школы'''
self.SchoolIconLabel = QtWidgets.QLabel(self.CentralWidget)
self.SchoolIconLabel.setGeometry(QtCore.QRect(100, 50, 191, 191))
self.SchoolIconLabel.setStyleSheet("background: rgb(255, 255, 255);")
self.SchoolIconLabel.setText("")
self.SchoolIconLabel.setObjectName("SchoolIconLabel")
# Кнопка
self.Button = QtWidgets.QPushButton(self.CentralWidget)
self.Button.setGeometry(QtCore.QRect(1670, 100, 91, 91))
self.Button.setStyleSheet(self.widgets_stylesheet)
self.Button.setObjectName("Button")
self.Button.clicked.connect(self.button_clicked)
self.setCentralWidget(self.CentralWidget)
self.statusbar = QtWidgets.QStatusBar(self)
self.statusbar.setObjectName("statusbar")
self.setStatusBar(self.statusbar)
self.retranslate_ui()
QtCore.QMetaObject.connectSlotsByName(self)
def retranslate_ui(self):
_translate = QtCore.QCoreApplication.translate
self.setWindowTitle(_translate("MainWindow", "Менеджер расписаний"))
self.StudentRadioButton.setText(_translate("MainWindow", " Ученик"))
self.TeacherRadioButton.setText(_translate("MainWindow", " Учитель"))
self.MondayLabel.setText(_translate("MainWindow", " Понедельник"))
self.TuesdayLabel.setText(_translate("MainWindow", " Вторник"))
self.WednesdayLabel.setText(_translate("MainWindow", " Среда"))
self.ThursdayLabel.setText(_translate("MainWindow", " Четверг"))
self.FridayLabel.setText(_translate("MainWindow", " Пятница"))
self.ClassLabel.setText(_translate("MainWindow", " Введите класс: "))
self.TeacherLabel.setText(_translate("MainWindow", " Введите фамилию учителя:"))
self.Button.setText(_translate("MainWindow", "ОК"))
def button_clicked(self):
""" Функция нажатия кнопки """
# Проверка состояния радиокнопки:
pass
'''
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я много чего поменял в вашем коде и добавил нужную вам проверку. Постарайтесь понять каждое изменение, если что-то будет не понятно - спросите.
from PyQt5 import QtCore, QtGui, QtWidgets
# ??? from smthg import parse_student, parse_teacher
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.centralWidget = QtWidgets.QWidget(self)
self.centralWidget.setObjectName("centralWidget")
self.setCentralWidget(self.centralWidget)
# Контейнеры с расписанием
self.mondaySheduleLabel = QtWidgets.QLabel(minimumWidth=200)
self.tuesdaySheduleLabel = QtWidgets.QLabel(minimumWidth=200)
self.wednesdaySheduleLabel = QtWidgets.QLabel(minimumWidth=200)
self.thursdaySheduleLabel = QtWidgets.QLabel(minimumWidth=200)
self.fridaySheduleLabel = QtWidgets.QLabel(minimumWidth=200)
# Радиокнопки
self.studentRadioButton = QtWidgets.QRadioButton('Ученик')
self.teacherRadioButton = QtWidgets.QRadioButton('Учитель')
# Надписи
self.mondayLabel = QtWidgets.QLabel('Понедельник', alignment=QtCore.Qt.AlignCenter)
self.tuesdayLabel = QtWidgets.QLabel('Вторник', alignment=QtCore.Qt.AlignCenter)
self.wednesdayLabel = QtWidgets.QLabel('Среда', alignment=QtCore.Qt.AlignCenter)
self.thursdayLabel = QtWidgets.QLabel('Четверг', alignment=QtCore.Qt.AlignCenter)
self.fridayLabel = QtWidgets.QLabel(
'Пятница', alignment=QtCore.Qt.AlignCenter, maximumHeight=50)
# Окна ввода
self.classValueLineEdit = QtWidgets.QLineEdit(placeholderText="Введите класс")
self.teacherValueLineEdit = QtWidgets.QLineEdit(placeholderText="Введите фамилию учителя")
# Иконка школы
self.schoolIconLabel = QtWidgets.QLabel(alignment=QtCore.Qt.AlignCenter)
self.schoolIconLabel.setPixmap(QtGui.QPixmap("Ok.png").scaled(200, 200))
# Кнопка
self.button = QtWidgets.QPushButton('ОК')
self.button.clicked.connect(self.button_clicked)
self.buttonGroup = QtWidgets.QButtonGroup()
self.buttonGroup.addButton(self.studentRadioButton)
self.buttonGroup.addButton(self.teacherRadioButton)
self.buttonGroup.buttonClicked.connect(self.check_button)
self.selected_button = None
self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
self.gridLayout.addWidget(self.schoolIconLabel, 0, 0, 2, 1)
self.gridLayout.addWidget(self.studentRadioButton, 0, 1, 1, 1)
self.gridLayout.addWidget(self.teacherRadioButton, 1, 1, 1, 1)
self.gridLayout.addWidget(self.classValueLineEdit, 0, 2, 1, 2)
self.gridLayout.addWidget(self.teacherValueLineEdit, 1, 2, 1, 2)
self.gridLayout.addWidget(self.button, 0, 4, 2, 1)
self.gridLayout.addWidget(self.mondayLabel, 3, 0, 1, 1)
self.gridLayout.addWidget(self.tuesdayLabel, 3, 1, 1, 1)
self.gridLayout.addWidget(self.wednesdayLabel, 3, 2, 1, 1)
self.gridLayout.addWidget(self.thursdayLabel, 3, 3, 1, 1)
self.gridLayout.addWidget(self.fridayLabel, 3, 4, 1, 1)
self.gridLayout.addWidget(self.mondaySheduleLabel, 4, 0, 2, 1)
self.gridLayout.addWidget(self.tuesdaySheduleLabel, 4, 1, 2, 1)
self.gridLayout.addWidget(self.wednesdaySheduleLabel, 4, 2, 2, 1)
self.gridLayout.addWidget(self.thursdaySheduleLabel, 4, 3, 2, 1)
self.gridLayout.addWidget(self.fridaySheduleLabel, 4, 4, 2, 1)
def button_clicked(self):
""" Функция нажатия кнопки """
# Проверка состояния радиокнопки:
if self.selected_button:
msg = QtWidgets.QMessageBox.information(
self, 'Информация', f'Выбрана кнопка: {self.selected_button}')
else:
msg = QtWidgets.QMessageBox.information(
self, 'Внимание', 'Нет выбранных кнопок.')
def check_button(self, radioButton):
self.selected_button = radioButton.text()
print(f"selected_button -> `{self.selected_button}`")
qss = '''
#centralWidget {
background-color: rgb(255, 147, 84);
}
QLabel, QRadioButton, QLineEdit, QPushButton {
background: rgb(255, 255, 255);
font: 24pt \"MS Shell Dlg 2\";
}
'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(qss) # +++
w = MainWindow()
w.setWindowTitle("Менеджер расписаний")
w.resize(1200, 600)
w.show()
sys.exit(app.exec_())

