def dispP2prob(pic_id): if util.DEBUG: print('【DEBUG】现在是第二部分,正在展示编号为'+str(pic_id)+'的图片') window = util.createWindow() tk.Label(window, text=util.TITLE_PREFIX+'第二部分'+util.TITLE_SUFFIX, font=('Arial', util.TITLE_FONT_SIZE)).pack() tk.Label(window, text='请依据图片信息回答问题', font=('Arial', util.TEXT_FONT_SIZE),justify= 'left').pack() photo = Image.open("src\\"+str(pic_id)+".png") photo = photo.resize(util.PIC_SIZE) photo = ImageTk.PhotoImage(photo) imgLabel = tk.Label(window,image=photo).pack() tk.Label(window, text='您打算将医疗物资运往哪个地区?请做出选择', font=('Arial', util.TEXT_FONT_SIZE),justify= 'left').pack() ans = tk.StringVar() tk.Radiobutton(window, text='上方地区',variable=ans, value='上',font=('Arial', util.TEXT_FONT_SIZE)).pack() tk.Radiobutton(window, text='下方地区',variable=ans, value='下',font=('Arial', util.TEXT_FONT_SIZE)).pack() def click(): tmp = ans.get() if tmp == "": if util.DEBUG: print('【DEBUG】被试对象没有选择答案就提交,本题重新测试') return if util.DEBUG: print('【DEBUG】被试对象选择的答案是:' + tmp) util.P2ANS.append(tmp) window.destroy() tk.Button(window, text="确定", command = click,font=('Arial', util.TEXT_FONT_SIZE)).pack() window.mainloop()
def dispP2inst(): window = util.createWindow() tk.Label(window, text=util.TITLE_PREFIX+'第一部分结束'+util.TITLE_SUFFIX, font=('Arial', util.TITLE_FONT_SIZE)).pack() tk.Label(window, text='恭喜你通过了第一部分的测试。\n\ 点击下面的按钮开始第二部分的测试(之后的题目之后的题除了测试题,都没有标准答案)', font=('Arial', util.TEXT_FONT_SIZE),justify= 'left').pack() tk.Button(window, text="确定", command = window.destroy).pack() window.mainloop()
def dispP3inst(): window = util.createWindow() tk.Label(window, text=util.TITLE_PREFIX + '第二部分结束' + util.TITLE_SUFFIX, font=('Arial', util.TITLE_FONT_SIZE)).pack() tk.Label(window, text='你完成了第二部分的测试。\n\ 接下来各个情境,其他信息类型不变,但是你将额外得知多数人选择的选项,请做出你的选择\n\ 点击下面的按钮开始第三部分的测试。', font=('Arial', util.TEXT_FONT_SIZE), justify='left').pack() tk.Button(window, text="确定", command=window.destroy).pack() window.mainloop()
def dispFin(): window = util.createWindow() tk.Label(window, text=util.TITLE_PREFIX + '第三部分结束' + util.TITLE_SUFFIX, font=('Arial', util.TITLE_FONT_SIZE)).pack() tk.Label(window, text='\n你完成了全部的测试。感谢你的参与。\n\n', font=('Arial', util.TEXT_FONT_SIZE), justify='left').pack() def click(): window.destroy() tk.Button(window, text="确定", command=window.destroy).pack() window.mainloop()
def dispP1_1(): window = util.createWindow() def click(): util.FLAG = 2 window.destroy() if util.DEBUG: tk.Button(window, text="【DEBUG】防止按不到的确定按钮", command=click).pack() tk.Label(window, text=util.TITLE_PREFIX + '题目说明' + util.TITLE_SUFFIX, font=('Arial', util.TITLE_FONT_SIZE)).pack() tk.Label(window, text='请仔细阅读以下情形:\n\ 某两个城镇突发传染性疾病,医疗物资紧缺。疫情发生后,民间慈善组织自发\n\ 筹募了一批医疗物资。但是物资只够供给给其中一个。在分配资源时尚不清楚\n\ 两个地区病人的情况,因此医疗物资将被随机分配。假如您现在知道每个区域\n\ 的病人状况,如下图所示。您可以改变物资送往的区域,请问您会如何选择。', font=('Arial', util.TEXT_FONT_SIZE), justify='left').pack() photo = Image.open("src\\sample.png") photo = photo.resize(util.PIC_SIZE) photo = ImageTk.PhotoImage(photo) imgLabel = tk.Label(window, image=photo).pack() tk.Label(window, text='物资小车的位置标示物资被随机分配送往的区域,\n\ 如图示例,物资随机送往了处于下方的区域。\n\n\ 每一行的小人个数表示该地区的患病人数,如图,上方的患病人数为2人,下方地\n\ 区的患病人数为5人。\n\n\ 小人身上的数字代表个体病情的严重程度,由临床医生评出(1-9评分,1为轻度,\n\ 9为重度)。如图,上方地区的患者病情严重程度分别为8、9;下方地区的患者\n\ 的病情严重程度分别为4、5、5、6、6;\n\n\ 总值为该区域病情严重程度的总和,在图中通过条形图表现。如图中,下方地区的总\n\ 值大于上方地区的(下方地区的总值条形图更长);\n\ 平均值=总值除以人数,表示人均的病情严重程度。如图中,下方地区的均值(5.2)\n\ 小于上方地区的(8.5)(下方的均值条形图更短)。\n\n\ 已了解整个情境并明白图片信息后,请点击确认。', font=('Arial', util.TEXT_FONT_SIZE), justify='left').pack() tk.Button(window, text="确定", command=click).pack() window.mainloop()
def dispP1_2(): window = util.createWindow() def click3(): util.FLAG = -1 window.destroy() if util.DEBUG: tk.Button(window, text="【DEBUG】跳过测试", command=click3).pack() tk.Label(window, text=util.TITLE_PREFIX + '测试题' + util.TITLE_SUFFIX, font=('Arial', util.TITLE_FONT_SIZE)).pack() tk.Label(window, text='请依据图片完成下面的测试题:', font=('Arial', util.TEXT_FONT_SIZE)).pack() photo = Image.open("src\\test.png") photo = photo.resize(util.PIC_SIZE) photo = ImageTk.PhotoImage(photo) imgLabel = tk.Label(window, image=photo).pack() ans = [tk.StringVar() for i in range(5)] tk.Label(window, text='1. 如果不作出改变,物资将送往哪个地区?', font=('Arial', util.TEXT_FONT_SIZE)).pack() tk.Radiobutton(window, text='上方地区', variable=ans[0], value='A').pack() tk.Radiobutton(window, text='下方地区', variable=ans[0], value='B').pack() tk.Label(window, text='2. 小人的个数表示?', font=('Arial', util.TEXT_FONT_SIZE)).pack() tk.Radiobutton(window, text='该地的人口密度', variable=ans[1], value='A').pack() tk.Radiobutton(window, text='患病人数', variable=ans[1], value='B').pack() tk.Label(window, text='3. 小人身上的红色数字代表?', font=('Arial', util.TEXT_FONT_SIZE)).pack() tk.Radiobutton(window, text='该个体患病的严重程度', variable=ans[2], value='A').pack() tk.Radiobutton(window, text='该个体的治愈概率', variable=ans[2], value='B').pack() tk.Label(window, text='4. 就平均值(红色条形图)而言,哪个地区的更大?', font=('Arial', util.TEXT_FONT_SIZE)).pack() tk.Radiobutton(window, text='上方地区', variable=ans[3], value='A').pack() tk.Radiobutton(window, text='下方地区', variable=ans[3], value='B').pack() tk.Label(window, text='5. 就病情总值(红色条形图)而言,哪个地区的更大?', font=('Arial', util.TEXT_FONT_SIZE)).pack() tk.Radiobutton(window, text='上方地区', variable=ans[4], value='A').pack() tk.Radiobutton(window, text='下方地区', variable=ans[4], value='B').pack() # 最后的按钮 def click1(): util.FLAG = 1 window.destroy() def click2(): util.FLAG = 3 if ans[0].get() == 'B' and ans[1].get() == 'B' and ans[2].get() == 'A'\ and ans[3].get() == 'A' and ans[4].get() == 'B' : util.FLAG = -1 window.destroy() tk.Button(window, text="返回查看说明", command=click1).pack() tk.Button(window, text="提交", command=click2).pack() window.mainloop()
f.write('\n,') for i in shuffled_pic2: f.write(p3ans[str(i)] + ',') f.write('\n相同与否(顺序与第二轮对应),') for i in shuffled_pic2: if i in choice_major_pic: f.write('1,') else: f.write('0,') f.write('\n') if __name__ == '__main__': util.initConfig() # 欢迎页面 window = util.createWindow() dispWelcome(window) window.mainloop() if util.DEBUG: print('【DEBUG】依据被试对象的信息,输出的表格命名为:' + util.FILE_NAME) # 说明部分 window = util.createWindow() dispInst(window) window.mainloop() # 第一部分 while util.FLAG != -1: if util.FLAG == 1: if util.DEBUG: print('【DEBUG】被试对象查看题目说明') dispP1_1()