Пока только базовый функционал проверки ответов.
Интересно послушать критику - что можно было реализовать более грамотно.
#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
# TODO
# 1 обработка стран с пробелом из дата (другая reg)
# 2 сделать счетчик ответов
# TODO: add questions mode switch
from PyQt4 import QtCore
from PyQt4 import QtGui
import random
import re
import codecs
class Tester(QtGui.QWidget):
# object initialization
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.initUI()
def initUI(self):
self.answers_num = 0
self.correct_answ = 0
self.percent = 0
self.label = QtGui.QLabel(self)
self.label.move(60, 40)
self.msg = QtGui.QLabel(self)
self.msg.move(60, 200)
self.counter = QtGui.QLabel(self)
self.counter.move(160, 200)
button = QtGui.QPushButton('Answer', self)
button.move(240, 100)
self.edit = QtGui.QLineEdit(self)
self.edit.move(60, 100)
self.connect(button, QtCore.SIGNAL('clicked()'),
self.checkAnswer)
# очищаем текстовое поле
self.connect(button, QtCore.SIGNAL('clicked()'),
self.edit.clear)
self.setWindowTitle('Prog')
self.setGeometry(250, 200, 350, 250)
self.showQuestion()
# устанавливаем режим тестирования
def setMode(self):
self.mode = 'answer'
# выбираем вопрос
def showQuestion(self):
# выбираем вопрос
file = codecs.open('data.txt', 'r', 'utf-8').readlines()
lines_num = len(file)-1
line = int(random.randint(0, lines_num))
# читаем строку и записываем вопрос и ответ в переменные
pattern_q = re.compile(u'(\w+)', re.UNICODE)
pattern_a= re.compile(u'(\w+)$', re.UNICODE)
question = pattern_q.match(file[line]).group()
self.answer = pattern_a.search(file[line]).group()
self.label.setText(self.answer)
self.label.adjustSize()
# обработка ответа
def checkAnswer(self):
# self.correct_answ = 0
# проверяем правильность ответа
if (self.answer.lower() == unicode(self.edit.text()).lower()):
self.msg.setText(u'правильно')
self.msg.adjustSize()
# self.correct_answ += 1
else:
self.msg.setText(u'неправильно')
self.msg.adjustSize()
# количество ответов
#self.answers_num += 1
# считаем количество правильных ответов и сдвигаемся к следующему вопросу
# self.countAnswers()
self.showQuestion()
def main():
app = QtGui.QApplication([])
exm = Tester()
exm.show()
app.exec_()
if __name__ == '__main__':
main()
Таиланд Бангкок
Италия, Рим