def createPage(self): # Clear previous widgets self.clearLayout() # Get question try: element = next(self.iterator) except StopIteration: self.showResults() return # Check if we should exclude this question doExclude = True includeIf = element.get("includeIf") if includeIf != None: for tag in includeIf.split(): try: self.tags[tag] doExclude = False break except KeyError: pass else: doExclude = False excludeIf = element.get("excludeIf") if excludeIf != None and not doExclude: for tag in excludeIf.split(): try: self.tags[tag] doExclude = True break except KeyError: pass if doExclude: return self.createPage() # Create page self.nameLabel.setText(element.find("title").text) # Create answers self.buttonGroup = QButtonGroup() answers = element.findall("answer") if len(answers) == 0: self.showResults() return for answer in answers: isBreaking = True if answer.get("breaking") == None: isBreaking = False radio = QRadioButton(answer.find("title").text) tags = {} for tag in answer.findall("tag"): tags.update({tag.text: None}) radio.setProperty("tags", tags) radio.setProperty("isBreaking", isBreaking) self.buttonGroup.addButton(radio) self.sLayout.addWidget(radio) self.sLayout.itemAt(0).widget().setChecked(True) self.sLayout.addStretch()