Python 如何以不同的顺序打印元组中的每个项

Python 如何以不同的顺序打印元组中的每个项,python,python-3.x,Python,Python 3.x,我已经编写了在tkinter中显示sql查询数据的代码。从搜索函数中,我想在一行上打印元组中的第一项,然后在另一行上打印其余结果。我知道元组中的每个元组都有四个数据项(日期、名称、开始时间、结束时间),但我不知道如何让它正常工作 def searched(): Main_Screen.configure(state = 'normal') Main_Screen.delete('1.0', END) searched_for = search.get() time

我已经编写了在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)

从未使用过tkinter,但认为可以在发送到tkinter之前格式化整个字符串:

for tuple_vars in list1:
    output = '{}\n{}\n{}\n{}\n'.format(*tuple_vars)
    Main_Screen.insert(tkinter.END, output)
如果是真的

list1 = [('2017-07-14', 'test', '11:00:00', '13:00:00'), 
         ('2017-07-21', 'test', '11:00:00', '13:00:00')]
分两步进行

for var1, var2, var3, var4 in list1:
    header = '{}\n'.format(var1)
    Main_Screen.insert(tkinter.END, header)  # ADD SOME FORMATTING
    output = '{}\n{}\n{}\n'.format(var2, var3, var4)
    Main_Screen.insert(tkinter.END, output)

从未使用过tkinter,但认为可以在发送到tkinter之前格式化整个字符串:

for tuple_vars in list1:
    output = '{}\n{}\n{}\n{}\n'.format(*tuple_vars)
    Main_Screen.insert(tkinter.END, output)
如果是真的

list1 = [('2017-07-14', 'test', '11:00:00', '13:00:00'), 
         ('2017-07-21', 'test', '11:00:00', '13:00:00')]
分两步进行

for var1, var2, var3, var4 in list1:
    header = '{}\n'.format(var1)
    Main_Screen.insert(tkinter.END, header)  # ADD SOME FORMATTING
    output = '{}\n{}\n{}\n'.format(var2, var3, var4)
    Main_Screen.insert(tkinter.END, output)

您忘记在
主屏幕中添加更多的
“\n”
s。我想插入
s。因此,您显示的示例是
list1
包含的内容?它分隔了每一行,但由于某种原因会出错。我将更新问题以显示它@AshishNitinPatil@Roelant是的,当我在数据库中搜索“test”时,列表1包含列表中的内容。您忘记添加更多
“\n”
s到您的
主屏幕。我想插入
s。因此,您显示的示例是
list1
包含的内容,它分隔了每一行,但由于某种原因会出错。我将更新问题以显示它@AshishNitinPatil@Roelant是的,当我在数据库中搜索“test”时,列表1包含了列表中的内容。谢谢,它是有效的:)我知道这可能很难做到,但我想让日期比其他日期更大,比如标题。你知道如何先用你的方法选择它吗?哈哈,不知道你怎么用加粗的字体(也许可以看到),但是拆分应该很容易。请看我的编辑。谢谢回复@Roelant。我有点搞不懂如何把你的两个答案结合起来。第一个用于列表中的每个元组,第二个用于一个元组。我将如何组合它们来完成主元组中的每个元组?更新问题以显示新代码和新错误。更改了我的代码(犯了一个小错误)。在您的编辑代码中,您不应该有两个循环,而应该只有我文章中的最后一个循环。谢谢,它是有效的:)我知道这可能很难做到,但我想让日期比其他日期更大,比如标题。你知道如何先用你的方法选择它吗?哈哈,不知道你怎么用加粗的字体(也许可以看到),但是拆分应该很容易。请看我的编辑。谢谢回复@Roelant。我有点搞不懂如何把你的两个答案结合起来。第一个用于列表中的每个元组,第二个用于一个元组。我将如何组合它们来完成主元组中的每个元组?更新问题以显示新代码和新错误。更改了我的代码(犯了一个小错误)。在编辑代码中,不应该有两个循环,而应该只有我文章中的最后一个循环。