Tkinter 如何逐行显示可单击的搜索结果

Tkinter 如何逐行显示可单击的搜索结果,tkinter,sqlite,python-3.4,Tkinter,Sqlite,Python 3.4,我正在从事一个a级计算机科学的编程项目,该数据库允许用户在SQL数据库中添加、编辑、搜索和删除食谱,使用Python中的SQLite3和Tkinter作为GUI。我对SQL和tkinter相当陌生 我目前正在开发搜索功能,它应该在一个条目小部件中获取用户输入的搜索词。 作为回应,程序应显示配方名称,其中包括搜索词,以及所述配方中使用的3种成分的类型。理想情况下,结果应逐行显示 我在第二次会议上也讨论了一个类似的问题 , 但问题是,我想让每个结果都可以点击,这样当点击结果时,它将打开与添加配方相同

我正在从事一个a级计算机科学的编程项目,该数据库允许用户在SQL数据库中添加、编辑、搜索和删除食谱,使用Python中的SQLite3和Tkinter作为GUI。我对SQL和tkinter相当陌生

我目前正在开发搜索功能,它应该在一个条目小部件中获取用户输入的搜索词。 作为回应,程序应显示配方名称,其中包括搜索词,以及所述配方中使用的3种成分的类型。理想情况下,结果应逐行显示

我在第二次会议上也讨论了一个类似的问题 , 但问题是,我想让每个结果都可以点击,这样当点击结果时,它将打开与添加配方相同的窗口,但是已经填写了配方的数据标签

(由于时间限制,我只使用了3种成分;我的老师希望在本周末看到工作代码)

最初,我收到一个模棱两可的列名错误,我认为这是因为查询中缺少别名。所以我输入了一些,如上面的SELECT查询所示,现在我得到了错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
    return self.func(*args)
  File "F:\ComputingAlevel\CompProject\PROJECT.py", line 84, in search_byrecipe
    WHERE ? in recipe''',(search)) #06/03/17 must use recipe
sqlite3.OperationalError: no such column: ingredients_list.type
问题是,在table Components_列表中肯定有一个名为type的列,所以我被卡住了。我该如何解决这个问题?如果纠正了,这是否会逐行显示可点击的搜索结果

很抱歉,这个问题很冗长,我不确定这个问题的最低要求细节是什么

更新:我已经删除了表的代码,下面是按要求精简的GUI代码:

def search_byrecipe():  #03/03/17
    search = a.get() 
    query = conn.execute('''
    SELECT recipe.name AS rn,ingredients_list.type AS il
    FROM recipe
    LEFT JOIN recipe AS r ON ingredients_list.ingredient = recipe.ingredient1
    LEFT JOIN recipe AS r2 ON ingredients_list.ingredient = recipe.ingredient2
    LEFT JOIN recipe AS r3 ON ingredients_list.ingredient = recipe.ingredient3
    WHERE ? in recipe''',(search)) 
    list1 = conn.fetchall()

    result = cursor.fetchone()

    print(result)
    output = '\n'.join([' '.join(row) for row in list1])

    master.insert(tkinter.END, output)

很难理解你真正的问题是什么。您是在问如何解决数据库问题(
没有这样的列:配料列表。键入
),还是在问如何在GUI中显示结果?如果是前者,则不需要任何GUI代码进行复制,如果是后者,则不需要任何数据库代码进行复制。您可能希望阅读并遵循此处的建议:首先,我希望获得GUI显示结果方面的帮助,因为错误是我尝试显示结果时出现的。如果我不清楚,请道歉,并感谢您的帮助。如果问题是在GUI中显示结果,请修改您的示例,使其不包含数据库代码。只需用两三列硬编码两行或三行结果。