Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么可以';我是否将cursor.fetchall()插入文本小部件?_Python_Sqlite_Tkinter - Fatal编程技术网

Python 为什么可以';我是否将cursor.fetchall()插入文本小部件?

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\

我正在尝试将文本插入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\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")