一、最重要的源碼
1、生成試題庫
import sqlite3
conn = sqlite3.connect('test3.db')
cursor = conn.cursor()
cursor.execute("""create table[exam] ([question] varchar(80) null,
[Answer_A] varchar(1) null,
[Answer_B] varchar(1) null,
[Answer_C] varchar(1) null,
[Answer_D] varchar(1) null,
[right_Answer] varchar(1) null)""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
Answer_D, right_Answer) values ('哈雷彗星的平均週期爲',
'54年','56年','73年','83年','C')""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
Answer_D, right_Answer) values ('夜郎自大中“夜郎”指的是現在哪個地方?',
'貴州','雲南','廣西','福建','A')""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
Answer_D, right_Answer) values ('在中國歷史上是誰發明了麻藥',
'孫思邈','華佗','張仲景','扁鵲','B')""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
Answer_D, right_Answer) values ('京劇中花旦是指',
'年輕男子','年輕女子','年長男子','年長女子','B')""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
Answer_D, right_Answer) values ('籃球比賽每隊幾人',
'4','5','7','6','B')""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
Answer_D, right_Answer) values ('在天願作比翼鳥,在地願爲連理枝。講述的是誰的愛情故事?',
'焦仲卿和劉蘭芝','梁山伯與祝英臺','崔鶯鶯與張生','楊貴妃和唐明皇','D')""")
print(cursor.rowcount)
cursor.close()
conn.commit()
conn.close()
1
2、讀取試題信息
conn = sqlite3.connect('test3.db')
cursor = conn.cursor()
cursor.execute('select * from exam')
values = cursor.fetchall()
cursor.close()
conn.close()
3、界面和邏輯設計
import tkinter
from tkinter import *
from tkinter.messagebox import *
def callNext():
global k
global score
useranswer = r.get()
print(r.get())
if useranswer == values[k][5]:
showinfo('恭喜', '恭喜你對了!')
score += 10
else:
showinfo('遺憾', '遺憾你錯了!')
k = k + 1
if k >= len(values):
showinfo('提示', '題目做完了')
return
timu['text'] = values[k][0]
radio1['text'] = values[k][1]
radio2['text'] = values[k][2]
radio3['text'] = values[k][3]
radio4['text'] = values[k][4]
r.set('E')
def callResult():
showinfo('你的得分', str(score))
以下是界面佈局代碼:
root = tkinter.Tk()
root.title('Python智力問答遊戲')
root.geometry('500x200')
r = tkinter.StringVar()
r.set('E')
k = 0
score = 0
timu = tkinter.Label(root, text = values[k][0]) # 題目
timu.pack()
創建第一個Frame組件
f1 = Frame(root)
f1.pack()
radio1 = tkinter.Radiobutton(f1, variable=r, value = 'A', text = values[k][1])
radio1.pack()
radio2 = tkinter.Radiobutton(f1, variable=r, value = 'B', text = values[k][2])
radio2.pack()
radio3 = tkinter.Radiobutton(f1, variable=r, value = 'C', text = values[k][3])
radio3.pack()
radio4 = tkinter.Radiobutton(f1, variable=r, value = 'D', text = values[k][4])
radio4.pack()
創建第二個Frame組件
f2 = Frame(root)
f2.pack()
Button(f2, text = '下一題', command = callNext).pack(side = LEFT)
Button(f2, text = '結 果', command = callResult).pack(side = LEFT)
root.mainloop()
B
A
B
B
B
B
B
二、改進
1、當輸入錯誤的時候,要提醒而不是報錯