用QT写的一个小程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36933797/article/details/78072721
import sys
from PyQt4 import QtGui
import random

Info=["欢迎使用上机答题系统,开始答题:" ,
    "当前是第 " ,
    " 题,您还有 " ,
    " 次机会:" ,
    "您的回答错误,请继续尝试.." ,
    "您的总得分是 : " ];

resultInfo = [ 'SMART' ,'GOOD' ,'OK' ,'PASS' ,'TRY AGAIN'];

class Sunyuqiang(QtGui.QWidget):


    def __init__(self):
        super(Sunyuqiang, self).__init__()
        self.center()
        self.initUI()

    def initUI(self):

        self.resize(400, 150)
        self.setWindowTitle('小学生测验')

        self.btn = QtGui.QPushButton('题目', self)
        self.btn.resize(60,25)
        self.btn.move(50, 50)

        self.ans = QtGui.QLineEdit(self)
        self.ans.resize(300, 25)
        self.ans.move(50, 20)

        self.le = QtGui.QLineEdit(self)
        self.le.resize(200,25)
        self.le.move(150, 50)

        self.btn = QtGui.QPushButton('提示', self)
        self.btn.resize(60, 25)
        self.btn.move(50, 80)

        self.req = QtGui.QLineEdit(self)
        self.req.resize(200, 25)
        self.req.move(150, 80)

        self.req = QtGui.QLineEdit(self)
        self.req.resize(200, 25)
        self.req.move(150, 80)

        self.btn = QtGui.QPushButton('评价', self)
        self.btn.resize(60, 25)
        self.btn.move(50, 110)

        self.sco = QtGui.QLineEdit(self)
        self.sco.resize(200, 25)
        self.sco.move(150, 110)

        self.show()
        self.showQuestionDialog()

    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, '是否退出',
            "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def showDialog(self,question):
        text, ok = QtGui.QInputDialog.getText(self, question, '输入你的答案:')
        return text

    def center(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size =  self.geometry()
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)

    def showQuestionDialog(self):
        print(Info[0])
        sum = 0
        for i in range(0, 10):
            while 1:
                x1 = random.randrange(0, 51, 1)
                x2 = random.randrange(0, 51, 1)
                if x1 + x2 <= 50 and x1 - x2 >= 0:
                    break
            res = 0
            question = " "
            flag = random.choice("+-")
            if str(flag) == "+":
                res = x1 + x2
                question = str(x1) + '+' + str(x2) + '=' + '?'
                self.le.setText(str(question))
                for tryTime in [3, 2, 1]:
                    self.ans.setText(Info[1] + str(i + 1) + Info[2] + str(tryTime) + Info[3])
                    x=self.showDialog(question)
                    if x=='exit:':
                        return
                    if x != str(res):
                        self.req.setText(Info[4])
                        if tryTime==1:
                            self.req.setText(question+'正确答案:' + str(res))
                    if x == str(res) and tryTime == 3:
                        sum = sum + 10
                        self.req.setText('回答正确')
                        break
                    if x == str(res) and tryTime == 2:
                        sum = sum + 7
                        self.req.setText('回答正确')
                        break
                    if x == str(res) and tryTime == 1:
                        sum = sum + 5
                        self.req.setText('回答正确')
                        break
            else:
                res = x1 - x2
                question = str(x1) + '-' + str(x2) + '=' + '?'
                self.le.setText(str(question))
                for tryTime in [3, 2, 1]:
                    self.ans.setText(Info[1] + str(i + 1) + Info[2] + str(tryTime) + Info[3])
                    x=self.showDialog(question)
                    if x=='exit:':
                        return
                    if x != str(res):
                        self.req.setText(Info[4])
                        if tryTime==1:
                            self.req.setText(question+'正确答案:' + str(res))
                    if x == str(res) and tryTime == 3:
                        sum = sum + 10
                        self.req.setText('回答正确')
                        break
                    if x == str(res) and tryTime == 2:
                        sum = sum + 7
                        self.req.setText('回答正确')
                        break
                    if x == str(res) and tryTime == 1:
                        sum = sum + 5
                        self.req.setText('回答正确')
                        break

        print('检测结束')
        print(Info[5] + str(sum))
        if sum >= 90:
            self.sco.setText(str(sum)+'分'+'您的评价为' + resultInfo[0])
        if sum < 90 and sum >= 80:
            self.sco.setText(str(sum)+'分'+'您的评价为' + resultInfo[1])
        if sum < 80 and sum >= 70:
            self.sco.setText(str(sum)+'分'+'您的评价为' + resultInfo[2])
        if sum < 70 and sum >= 60:
            self.sco.setText(str(sum)+'分'+'您的评价为' + resultInfo[3])
        if sum < 60:
            self.sco.setText(str(sum)+'分'+'您的评价为' + resultInfo[4])



def main():

    app = QtGui.QApplication(sys.argv)
    syq = Sunyuqiang()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/qq_36933797/article/details/78072721