我正在尝试从tkinter将文本插入文本小部件。当我将cursor.fetchall()
放入参数时,我得到了错误:
Tkinter回调Traceback中的异常(最近一次调用最后一次):
文件 “ C:\ Users \ lmaor \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ tkinter__init __。py”, 第1705行,在致电 返回self.func(* args)文件“ C:\ Users \ lmaor \ Desktop \ Database \ ComputerShop Database.py”,第54行 在showCustomers txtTerminal.insert(END,“” + cursor.fetchall()+“ \ n”)TypeError:只能将str(而非“ list”)连接到str
我尝试使用不带“ \ n”的cursor.fetchall()
,因此没有附加任何字符串,但它只是显示为空。
txtTerminal
是一个tkinter文本小部件
showCustomers()
通过名为btnShowCustomers的按钮激活
def showCustomers():
print(" ")
print("Customers:")
cursor.execute("SELECT * FROM tblCustomers")
print(cursor.fetchall())
txtTerminal.config(state = NORMAL)
txtTerminal.insert(END, " " + cursor.fetchall() + "\n")
txtTerminal.config(state = DISABLED)
将结果打印在“ Python 3.7.2 Shell”中时,显示为
“客户:[(1,'约翰','史密斯')]'
这是我希望txtTerminal中的文本看起来像的样子,相反,我得到的是错误或什么都没有。
答案 0 :(得分:0)
结果是列表中的元组(基本上是二维集),因此不会在文本小部件中插入整个元组值。
尝试一下:
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")
它将列表中的第一个元组作为“行”,然后从“行”中将一个值作为“数据”。 最后,它将把这些数据插入到文本小部件中。
随时提出问题或是否出现错误。
到那时,Ciao!