我已经编写了代码来显示tkinter中的sql查询中的数据。从搜索函数中,我想打印出一行中元组中的第一项,然后将其余结果打印在另一行上。我知道元组中的每个元组都有四个数据项(日期,名称,开始时间,结束时间),但我无法弄清楚如何使它正常工作。如何以不同顺序打印元组元组中的每个元素
def searched():
Main_Screen.configure(state = 'normal')
Main_Screen.delete('1.0', END)
searched_for = search.get()
timeslot = cursor.execute('''SELECT * FROM dates WHERE Name = (?)''',(searched_for,))
list1 = list(cursor.fetchall())
print(list1)
cursor.execute('''SELECT COUNT(*) FROM dates WHERE Name = (?) ''',(searched_for,))
result = cursor.fetchone()[0]
print(result)
n = 1
m = 1
for i in range(0, result - 1):
my_variable = list1[m-1][n-1]
Main_Screen.insert(tkinter.END,my_variable)
Main_Screen.insert(tkinter.END, "\n")
for i in range(0,3):
my_var2 = list1[m-1][2-1]
Main_Screen.insert(tkinter.END,my_var2)
my_var3 = list1[m-1][3-1]
Main_Screen.insert(tkinter.END,my_var3)
my_var4 = list1[m-1][4-1]
Main_Screen.insert(tkinter.END,my_var3)
Main_Screen.insert(tkinter.END, "\n")
m = m + 1
例如,我搜索名称为'test'的所有东西。我收到这份名单是:
[('2017-07-14', 'test', '11:00:00', '13:00:00'), ('2017-07-21', 'test', '11:00:00', '13:00:00'), ('2017-07-28', 'test', '11:00:00', '13:00:00'), ('2017-08-04', 'test', '11:00:00', '13:00:00'), ('2017-08-11', 'test', '11:00:00', '13:00:00'), ('2017-03-10', 'test', '12:00:00', '14:00:00')]
6(how many are in the main tuple)
但是当打印到GUI:
2017-07-14
test11:00:0011:00:00
test11:00:0011:00:00
test11:00:0011:00:00
2017-08-04
test11:00:0011:00:00
test11:00:0011:00:00
test12:00:0012:00:00
我想要什么:
Date of timeslot
Name of Timeslot
Start Time
End Time
而且由于某种原因,我得到这个错误:
File "C:\Users\dansi\AppData\Local\Programs\Python\Python36-32\gui test 3.py", line 124, in searched
my_variable = list1[m-1][n-1]
IndexError: list index out of range
编辑=
def searched():
Main_Screen.configure(state = 'normal')
Main_Screen.delete('1.0', END)
searched_for = search.get()
timeslot = cursor.execute('''SELECT * FROM dates WHERE Name = (?)''',(searched_for,))
list1 = list(cursor.fetchall())
print(list1)
cursor.execute('''SELECT COUNT(*) FROM dates WHERE Name = (?) ''',(searched_for,))
result = cursor.fetchone()[0]
print(result)
for tuple_vars in list1:
for var0, var1, var2 ,var3 in tuple_vars:
header = '{}\n'.format(var0)
Main_Screen.insert(tkinter.END, header) # ADD SOME FORMATTING
output = '{}\n{}\n{}\n{}\n'.format(var1, var2, var3)
Main_Screen.insert(tkinter.END, output)
for i in range(0, result - 1):
Main_Screen.insert(tkinter.END, "\n")
,并得到新的错误:
File "C:\Users\dansi\AppData\Local\Programs\Python\Python36-32\gui test 3.py", line 122, in searched
for var0, var1, var2 ,var3 in tuple_vars:
ValueError: too many values to unpack (expected 4)
你忘了给你的'Main_Screen.insert'添加更多的''\ n“'s我想。 –
所以你展示的例子是'list1'包含的是什么? – Roelant
分隔每一行,但由于某种原因得到一个错误。病毒更新的问题,以显示它@AshishNitinPatil – pythonsnake