How do I show a Test_Question (String) per page?? (PyQt/Python) -
i creating pyqt application creates , sets tests user. however, when setting test questions wanted 1 question viewed per page. example, if user start test, question appear. once have answered question, click button 'proceed'
presents next page showing 2nd question , on... however, in case, unaware how many questions there in each test, number of pages vary. using switching layouts rather switch layouts opposed open new windows means have create class per question , because questions per test vary, unsure how present questions????
i not going copy out entire application code provide basic example below:
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) question1 = question1(self) self.central_widget.addwidget(question1) self.central_widget.setcurrentwidget(question1) question1.proceed.clicked.connect(self.question2) def question2(self): question2 = question2(self) self.central_widget.addwidget(question2) self.central_widget.setcurrentwidget(question2) class question1(qtgui.qwidget): def __init__(self, parent=none): super(question1, self).__init__(parent) question = qtgui.qlabel('what 5+5?') 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) class question2(qtgui.qwidget): def __init__(self, parent=none): super(question2, self).__init__(parent) question = qtgui.qlabel('what 45+10?') 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) #.... if __name__ == '__main__': user = '' app = qtgui.qapplication([]) window = starttest() window.showfullscreen() app.exec_()
just have single question
class can parameterized. example code in question, simple passing label text argument, since thing different:
class question(qtgui.qwidget): def __init__(self, label, parent=none): super(question, self).__init__(parent) question = qtgui.qlabel(label) ... question1 = question('what 5+5?', self) question2 = question('what 45+10?', self)
if question types have different structure, create subclasses each type:
class complexquestion(question): def __init__(self, label, parent=none): super(complexquestion, self).__init__(parent) # additional initialization...
or if wanted avoid subclassing, add methods question
class enabled/disabled features.
Comments
Post a Comment