Группировка около 100 радиокнопок

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

Я нашел решение по этой ссылке: связаны%20%20 с%20различными%20функциями" rel="nofollow noreferrer">https://www.delftstack.com/tutorial/pyqt5/pyqt5-radiobutton/#:~:text=setChecked(True)-,PyQt5%20QRadiobutton %20Group,%20подключены%20к %20различным%20функциям.

Однако они не создали переключатели с циклом for. Что мне делать с этим?

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui, QtWidgets

class Ornek(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.toggles = []
        self.lay = QVBoxLayout()
        self.h_box = QGridLayout()


        for i in range (4):
            self.btngroup = QButtonGroup()
            for j in range (4):
                if j % 4 == 0:
                    self.btn = QRadioButton("A", self)
                elif j % 4 == 1:
                    self.btn = QRadioButton("B", self)
                elif j % 4 == 2:
                    self.btn = QRadioButton("C", self)
                else:
                    self.btn = QRadioButton("D", self)


                text = self.btn.text()
                self.btn.clicked.connect(lambda ch, text=text: print("\nclicked--> {}".format(text)))
                self.h_box.addWidget(self.btn,i,j,1,1)
            self.lay.addLayout(self.h_box)

        self.setLayout(self.lay)



        self.setGeometry(300,300,250,250)
        self.setWindowTitle("Çıkış Projesi")
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    pencere = Ornek()
    sys.exit(app.exec_())
   

person Fatih Tüz    schedule 21.07.2020    source источник
comment
Можете ли вы быть более ясным? Что вы имеете в виду, говоря, что я хочу сгруппировать эти выборки? Вы уже создаете 4 группы по 4 радио, что вы не можете сделать?   -  person musicamante    schedule 21.07.2020
comment
Я имею в виду, когда я выбираю новый ответ, то есть если я выбираю B во втором вопросе, мой выбор первого вопроса исчезает.   -  person Fatih Tüz    schedule 21.07.2020


Ответы (1)


Вы создали QButtonGroup, но не используете ее, ваш код можно переписать так:

def initUI(self):
    self.toggles = []
    lay = QVBoxLayout(self)
    h_box = QGridLayout()
    lay.addLayout(h_box)

    for i in range(4):
        btngroup = QButtonGroup(self)
        btngroup.buttonClicked.connect(lambda btn: print(btn.text()))

        for j in range(4):
            btn = QRadioButton()
            btngroup.addButton(btn)
            h_box.addWidget(btn, i, j, 1, 1)

            if j % 4 == 0:
                btn.setText("A")
            elif j % 4 == 1:
                btn.setText("B")
            elif j % 4 == 2:
                btn.setText("C")
            else:
                btn.setText("D")

        
    self.setGeometry(300, 300, 250, 250)
    self.setWindowTitle("Çıkış Projesi")
    self.show()
person eyllanesc    schedule 21.07.2020
comment
На самом деле я пытался добавить кнопки в кнопку группы, но это было не то место (после второго for). Теперь я увидел это, основная глупая ошибка. Спасибо за ваше решение, оно мне очень помогло! - person Fatih Tüz; 21.07.2020