Форум сайта python.su
0
пару слов в общем: есть прога которая реализует тестирование. я рандомно выбираю вопрос и для него подгружается набор элементов (лейблы, эдиты, и тд). есть тип вопроса “single-choice” для него подгружается несколько радиобатонов и суть проблемы в том, что при следующей подгрузке этого типа вопроса сохраняется состояние checked для радиобатона который я выбрал на предыдущем вопросе. radio.setChecked(False) не работает
Офлайн
294
cheweyчестно говоря, так и хочеться ответить: “потому что гладиолус”. Не видя кода, с возможностю повторить проблему никто вам ничего толкового не посоветует.
radio.setChecked(False) не работает
[code python][/code]
Офлайн
0
вот код
Прикреплённый файлы:
tests.pyw (8,5 KБ)
Офлайн
0
к нему json файл
Прикреплённый файлы:
tests.json (2,5 KБ)
Офлайн
294
Так и не выйдет у вас ничего таким макаром. Так уж устроены радиобаттоны у КуТе, по умолчанию.
Один раз чекнули и потом фиг анчекнеш.
У вас несколько вариантов:
1. каждый раз создавать новую группу радиобаттонов.
2. всегда ставить выбор по умолчанию на первый баттон.
3. обьединить их в группу QButtonGroup, тогда вы сможеже их анчекнуть.
по последнему варианту небольшой пример:
import sys from PyQt4 import QtGui class Window(QtGui.QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.radio_bttns = [] layout = QtGui.QVBoxLayout(self) self.setLayout(layout) self.btn_group = QtGui.QButtonGroup(self) # Группа для радиобаттонов for i in range(4): radio = QtGui.QRadioButton(self, text = 'text {}'.format(i)) self.radio_bttns.append(radio) self.btn_group.addButton(radio) layout.addWidget(radio) clear_btn = QtGui.QPushButton(self, text = 'Clear') layout.addWidget(clear_btn) clear_btn.clicked.connect(self.clear) self.show() def clear(self): # очитска работтонов self.btn_group.setExclusive(False) # переводим группу из екслюзивного ржима, в нем возможен множественный выбор/не выбрать ни одной for radio in self.radio_bttns: radio.setChecked(False) # снимаем отметки self.btn_group.setExclusive(True) # возвращаем группу в эксклюзивный режим, чтобы одновременно можно было выделить только один app = QtGui.QApplication(sys.argv) window = Window() sys.exit(app.exec_())
[code python][/code]
Офлайн
0
спасибо, все сработало
Офлайн