- 29
- 0
设计一个问答游戏,由tkinter显示,sqlite作为数据库,每个智力问答由题目,四个选项和正确答案(question,answer_A,answer_B,answer_C,answer_D,right_answer)组成。程序中从试题库中读取题目显示在GUI界面中供用户答题。在界面设计时,智力问答题目是标签空间,4个选项是单选按钮控件,在“下一题”按钮单击事件中实现题目的切换和对错判断,如果正确得分socre加10分,错误不加分,并判断用户是否做完。在“结果”按钮单击事件中实现得分socre的显示
sqlite生成生成试题库,读取试题信息都没有问题,在设计tkinter时,显示完第一题的选项后,第二题的选项并没有覆盖第一题的选项,而是显示在第一题的下方。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
import sqlite3
import tkinter as tk
import tkinter.messagebox
window=tk.Tk()
window.title('Python智力问答游戏')
window.geometry('400x400')
v=tk.StringVar()
v.set(1)
score=0
num=0
conn = sqlite3.connect('test.db')
c=conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS COMPANY
(QUESTION TEXT NOT NULL,
ANSWER_A TEXT NOT NULL,
ANSWER_B TEXT NOT NULL,
ANSWER_C TEXT,
ANSWER_D TEXT,
RIGHT_ANSWER TEXT);''')
c = conn.cursor()
c.execute("INSERT INTO COMPANY (QUESTION,ANSWER_A,ANSWER_B,ANSWER_C,ANSWER_D,RIGHT_ANSWER) \
VALUES ('q1','PAUL','TT','TEXAS','RIGHT','a1')") #题目具体内容先由此代替
c.execute("INSERT INTO COMPANY (QUESTION,ANSWER_A,ANSWER_B,ANSWER_C,ANSWER_D,RIGHT_ANSWER) \
VALUES ('q2','mike','yy','u','RIGHT','a2')")
c.execute("INSERT INTO COMPANY (QUESTION,ANSWER_A,ANSWER_B,ANSWER_C,ANSWER_D,RIGHT_ANSWER) \
VALUES ('q3','luke','TT','jj','RIGHT','a3')")
c.execute("INSERT INTO COMPANY (QUESTION,ANSWER_A,ANSWER_B,ANSWER_C,ANSWER_D,RIGHT_ANSWER) \
VALUES ('q4','lina','TT','Tty','RIGHT','a4')")
cursor=c.execute("select QUESTION, ANSWER_A, ANSWER_B, ANSWER_C, ANSWER_D, RIGHT_ANSWER from COMPANY")
value=cursor.fetchall()
var=tk.StringVar()
var.set(value[0][0])
l1=tk.Label(window,textvariable=var)
l1.pack()
**def next_and_judge(): ##出错部分
global score
global num
r1 = tk.Radiobutton(window, text=value[num][num+1], variable=v, value=1)
r1.pack()
r2 = tk.Radiobutton(window, text=value[num][num+2], variable=v, value=2)
r2.pack()
r3 = tk.Radiobutton(window, text=value[num][num+3], variable=v, value=3)
r3.pack()
r4 = tk.Radiobutton(window, text=value[num][num+4], variable=v, value=4)
r4.pack()
num=num+1
if var.get()==value[num-1][5]:
score=10+score
b1=tk.Button(window,text='xiayiti',command=next_and_judge)
b1.pack()**
def sum():
tkinter.messagebox.showinfo(title='END',message=str(score))
b2=tk.Button(window,text='结束')
b2.pack()
conn.commit()
print('operation done successfully')
conn.close()
window.mainloop()
第一题覆盖显示第二题的选项,按下按钮“下一题”切换题目。
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
