cursor.fetchall方法的Python Tkinter标签

时间:2018-04-02 19:47:37

标签: python tkinter

我的代码有点问题。我想要做的是输出'result'变量中的所有信息,而不仅仅是最新的条目。我知道'config'方法在for循环中,这就是它输出最新条目的原因,但我似乎无法通过任何其他方式来完成它。

如果有人能提供帮助,我们将不胜感激。

def view_content(self):
    connection.connect(user="root", password="")
    query = "SELECT * FROM users WHERE User_ID <5"
    cursor.execute(query)
    results = cursor.fetchall()
    for result in results:
        self.answer.config(text=result[0:])

谢谢, 臭名昭著

1 个答案:

答案 0 :(得分:2)

它只显示最后一行,因为您覆盖了所有其他数据行。假设self.answer是可以处理显示嵌套列表的文本区域小部件的行,您可以执行以下操作:

results = cursor.fetchall()
results = '\n'.join(['\t'.join(row) for row in results])
self.answer.config(results)

该中间行将嵌套列表转换为每个行的制表符(&#39; \ t&#39;),并在行之间添加换行符(&#39; \ n&#39;)以使其更多& #34;人类可读&#34;根据布莱恩奥克利的建议。

另一种方法是设置某些内容以单独显示每一行,并按照当前的方式加载它们。

results = cursor.fetchall()
result = results.next()
if result: self.row1.config(text=result)
result = results.next()
if result: self.row2.config(text=result)
result = results.next()
if result: self.row3.config(text=result)
result = results.next()
if result: self.row4.config(text=result)
result = results.next()
if result: self.row5.config(text=result)

一种更简单的方法(通常)是设置一个表结构来显示该数据,并为您检索的每一行向显示表添加一行。它已经有一段时间了,但我不记得tkinter有一个表格小部件。