【问题标题】:Can't retrieve data from my database for my tkinter GUI无法从我的数据库中为我的 tkinter GUI 检索数据
【发布时间】:2013-03-21 16:03:46
【问题描述】:

它不允许我从我的数据库中访问我的提示,出现错误。

代码:

def do_question(self):
self.func1()
#myGlobal + 1
if myGlobal >5:
    import MathsvadersReal

SQL = 'SELECT * FROM tblQuestion'
cursor = Databaseconnector.SELECT(SQL)
rows = cursor.fetchall()
random_row = random.choice(rows)

print random_row.QuestionID, random_row.Question, random_row.Hint, random_row.A1, random_row.A2, random_row.A3, random_row.A4, random_row.CorrectAnswer

# create welcome label
self.label1 = Tkinter.Label(self, bg ='yellow', text = (random_row.Question))
self.label1.grid(row = 0, column = 6, columnspan = 2, sticky = 'E')

self.label111 = Tkinter.Label(self, bg ='red', text = (random_row.QuestionID))
self.label111.grid(row = 0, column = 1, columnspan = 4, sticky = 'W')

提示代码:

  def homepage_link(self):
    SQL = 'SELECT Hint FROM tblQuestion WHERE QuestionID = %s' % self.label111
    cursor = Databaseconnector.SELECT(SQL)
    rows = cursor.fetchall()
    tkMessageBox.showinfo("Hint", rows[0]['Hint'])

错误:

IndexError: 列表索引超出范围

【问题讨论】:

  • IndexError 表示fetchall() 没有返回任何行。

标签: python database user-interface python-2.7 tkinter


【解决方案1】:

您传递的是小部件的字符串表示形式,而不是 text 选项。 homepage_link 的第一行应该是:

SQL = 'SELECT Hint FROM tblQuestion WHERE QuestionID = %s' % self.label111['text'] 

【讨论】:

  • 当我改变时,我得到一个不同的错误:TypeError: row indices must be integers, not str
  • @SmithJr 使用rows[0][0] 而不是rows[0]['Hint']
  • TypeError: 字符串索引必须是整数
  • @SmithJr 那是你代码的另一部分的问题。请注意,如果您执行"mystring"['foo'] 之类的操作,则会出现此错误,但由于您使用整数作为索引,因此问题不存在。
猜你喜欢
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 2015-12-14
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
相关资源
最近更新 更多