Python 为什么可以';我是否将cursor.fetchall()插入文本小部件?
我正在尝试将文本插入tkinter的文本小部件中。当我将Python 为什么可以';我是否将cursor.fetchall()插入文本小部件?,python,sqlite,tkinter,Python,Sqlite,Tkinter,我正在尝试将文本插入tkinter的文本小部件中。当我将cursor.fetchall()放入参数时,我得到了错误: Tkinter回调回溯中出现异常(最近一次调用最后一次): 文件 “C:\Users\lmaor\AppData\Local\Programs\Python\Python37-32\lib\tkinter\uuuuu init\uuuuuu.py”, 第1705行,在呼叫中 返回self.func(*args)文件“C:\Users\lmaor\Desktop\Database\
cursor.fetchall()
放入参数时,我得到了错误:
Tkinter回调回溯中出现异常(最近一次调用最后一次):文件 “C:\Users\lmaor\AppData\Local\Programs\Python\Python37-32\lib\tkinter\uuuuu init\uuuuuu.py”, 第1705行,在呼叫中 返回self.func(*args)文件“C:\Users\lmaor\Desktop\Database\ComputerShop Database.py”,第54行, 在showCustomers中 TXTERMINAL.insert(END,“+cursor.fetchall()+“\n”)类型错误:只能将str(而不是“列表”)连接到str 我尝试过使用
cursor.fetchall()
而不使用“\n”,因此没有附加字符串,但结果显示为空
txtTerminal
是一个tkinter文本小部件
showCustomers()
通过名为btnShowCustomers的按钮激活
此函数用于打印表中所有客户的完整列表
在“Python3.7.2 Shell”中打印结果时,它显示为
'客户:[(1,'约翰','史密斯')'
这就是我希望txtTerminal中的文本看起来的样子,相反,我要么得到一个错误,要么什么都没有。由于结果是列表中的一个元组(基本上是一个二维集),它不会在文本小部件中插入整个元组值 试试这个:
def showCustomers():
print(" ")
print("Customers:")
cursor.execute("SELECT * FROM tblCustomers")
print(cursor.fetchall())
txtTerminal.config(state = NORMAL)
for line in cursor.fetchall():
for data in line:
txtTerminal.insert(END, " " + data + "\n")
txtTerminal.config(state = DISABLED)
我更改的主要内容是插入机制,即
for line in cursor.fetchall():
for data in line:
txtTerminal.insert(END, " " + data + "\n")
它将从列表中取出第一个元组作为“行”,然后从“行”中取出一个值作为“数据”。
至少,它会将该数据插入到文本小部件中
如果出现错误,请随时提问
在那之前,再见 使用“+str(cursor.fetchall())+”\n“
或f“{cursor.fetchall()}\n”
。顺便说一句,两次调用cursor.fetchall()
是不正确的,因为最后一次调用将得到空列表。
for line in cursor.fetchall():
for data in line:
txtTerminal.insert(END, " " + data + "\n")