用python里的tkinter组件和文本文件写了一个能够检测只有单项选择题的小程序,这据这个思路,稍加修改就可以作成:多项选择题、判断题等的程序。
好了,先看一看文本件的题结成:
1.在TCP/IP的进程之间进行通信经常使用客户/服务器方式,下面关于客户和服务器的描述错误的是( )。
A.客户和服务器是指通信中所涉及的两个应用进程。
B.客户/服务器方式描述的是进程之间服务与被服务的关系。
C.服务器是服务请求方,客户是服务提供方。
D.一个客户程序可与多个服务器进行通信。
A
题目描述、答案和正确答案各占一行。
存储题目的类Stest保存在Stest.py文件中,类结构为:
class Stest():
def __init__(self,sTitle,answerA,answerB,answerC,answerD,result):
"""定义单项选择题"""
self.sTitle=sTitle#题目内容
self.answerA=answerA#答案A
self.answerB=answerB#答案A
self.answerC=answerC#答案A
self.answerD=answerD#答案A
self.result=result#正确答案
检测程序的主代码
读取文件
在这一个函数中,每次循环读出6行作为一个testB的数据把它加在列表test中。
注意:在循环前一定要先读出一行:line = file_object.readline(),否则会出现题目错误。
def loadFile(filename,test):
"""载入考试题目文件"""
with open(filename) as file_object:
line = file_object.readline()
while line:
title = line
line = file_object.readline()
answerA = line
line = file_object.readline()
answerB = line
line = file_object.readline()
answerC = line
line = file_object.readline()
answerD = line
result = line = file_object.readline()
testB = Stest(title, answerA, answerB, answerC, answerD, result)
test.append(testB)
line = file_object.readline()
file_object.close()
“前一题”、“后一题”和单击左侧题号的响应事件
根据参数Tf的值来判断,题目记录的显示:0为单击“前一题”按钮;1为“后一题”按钮;2为左侧题号按钮。Vint用来记录当前题目编号,Flrd是单击左侧按钮题号的value值。
def fnTitle(Tf):
#用来决定按钮是“向前一条记录还是后一条记录
i=Vint.get()
if Tf==0:
if i>0:
i=i-1
if Tf==1:
if i<stM