2013-02-26 18 views
0

基本上我試圖讓我的數據庫連接到我的GUI並顯示一個隨機問題,但它根本不工作,任何想法?不能讓我的數據庫連接到我的數學遊戲

SQL = 'SELECT * FROM tblQuestion' 
cursor = Databaseconnector.SELECT(SQL) 
rows = cursor.fetchall() 
rows = random.choice(rows) 
print rows.Question, rows.Hint, rows.A1, rows.A2, rows.A3, rows.A4, rows.CorrectAnswer 
#def create_widgets(self): 
#create welcome label 
label1 = Tkinter.Label(self, text = (rows(1).Question)) 
label1.grid(row = 0, column = 1, columnspan = 2, sticky = 'W') 

ERROR: TypeError: ‘pydodbc.Row’ object is not

+0

我相信你的錯誤繼續」 ...不可調用「?這個'label1 = Tkinter.Label(self,text =(rows(1).Question))'是罪魁禍首,原因是'random.choice'返回一行,但即使你有一個正確的列表做索引會是'rows [1] .Question' – dmg 2013-02-26 12:09:20

回答

1

rows是第一pydodbc.Row對象的集合,但你改變它是一個單一的pydodbc.Row對象通過調用random.choice:

rows = cursor.fetchall() # rows is a list 
rows = random.choice(rows) # now rows is a single object 

然後嘗試調用該對象使用()

label1 = Tkinter.Label(self, text = (rows(1).Question)) 

失敗,您提供的(部分)錯誤信息:

ERROR: TypeError: ‘pydodbc.Row’ object is not callable 

解決這個使用一個新的變量爲單排的最佳方式:

rows = cursor.fetchall() 
random_row = random.choice(rows) 

... 

label1 = Tkinter.Label(self, text = (random_row.Question)) 
相關問題