How do I present 1 string per page?? (PyQt/Python) -
i trying write code allows me present 1 questions per page (without opening new windows). wanted know how alter code below allow me this??
import sys pyqt4 import qtcore, qtgui class starttest(qtgui.qmainwindow): def __init__(self, parent=none): super(starttest, self).__init__(parent) self.central_widget = qtgui.qstackedwidget() self.setcentralwidget(self.central_widget) qpage = question(self) self.central_widget.addwidget(qpage) self.central_widget.setcurrentwidget(qpage) class question(qtgui.qwidget): def __init__(self, label, parent=none): super(question, self).__init__(parent) label = question1 question = qtgui.qlabel(label) self.proceed = qtgui.qpushbutton('proceed') self.answer = qtgui.qlineedit(self) layout = qtgui.qformlayout() layout.addrow(question, self.answer) layout2 = qtgui.qvboxlayout() layout2.addlayout(layout) layout2.addwidget(self.proceed) self.setlayout(layout2) self.proceed.clicked.connect(self.nextq) def nextq(self): answer = self.answer.text() studentans.append(answer) label = question2 studentans = [] question1 = 'what 5+5?' question2 = 'what 45+10?' if __name__ == '__main__': user = '' app = qtgui.qapplication([]) window = starttest() window.showfullscreen() app.exec_()
this should give idea of how structure program:
import sys pyqt4 import qtcore, qtgui class starttest(qtgui.qmainwindow): def __init__(self, questions, parent=none): super(starttest, self).__init__(parent) self.stack = qtgui.qstackedwidget(self) self.setcentralwidget(self.stack) index, question in enumerate(questions): page = question(question, self) page.submit.clicked[()].connect( lambda index=index: self.handlesubmit(index)) self.stack.addwidget(page) self.answers = [] def handlesubmit(self, index): page = self.stack.widget(index) answer = page.answer.text() # validate submitted answer... self.answers.append(answer) if index < self.stack.count() - 1: self.stack.setcurrentindex(index + 1) class question(qtgui.qwidget): def __init__(self, question, parent=none): super(question, self).__init__(parent) self.question = qtgui.qlabel(question, self) self.answer = qtgui.qlineedit(self) self.submit = qtgui.qpushbutton('submit', self) form = qtgui.qformlayout() form.addrow(self.question, self.answer) layout = qtgui.qvboxlayout(self) layout.addlayout(form) layout.addwidget(self.submit) if __name__ == '__main__': user = '' app = qtgui.qapplication([]) questions = [ 'what 5+5?', 'what 45+10?', 'what 28+47?', 'what 22+13?', ] window = starttest(questions) window.showfullscreen() app.exec_()
Comments
Post a Comment