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

时间:2017-04-25 00:49:56

标签: tkinter sqlite python-3.4

我正在开发A Level Computer Science的编程项目,该数据库允许用户在SQL数据库中添加,编辑,搜索和删除配方,使用Python中的SQLite3和GUI中的Tkinter。我是SQL和tkinter的新手。

我目前正致力于搜索功能,该功能应该在用户输入的搜索词中输入一个用户输入的搜索词。 作为响应,程序应显示包括搜索项的配方名称,以及所述配方中使用的3种成分的类型。理想情况下,结果应该逐行显示。

我在看过类似的问题 How to output results from a sqlite3 query on seperate rows in a tkinter GUI, 但问题是我希望每个结果都可以点击,这样当点击结果时,它会打开与添加配方的窗口相同的窗口,但是已经填写了配方的dtails。

(由于时间限制,我只使用了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

问题是,在tables_list表中肯定有一个名为type的列,所以我被卡住了。我将如何解决这个问题,如果更正,这实际上会逐行显示可点击的搜索结果?

This is the main window. The space above the button and entry widgets is where I would like the search results displayed.

对不起,这个问题很冗长,我不确定这个问题的最低要求是什么。

更新:我删除了表的代码,这里是根据请求删除的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)

0 个答案:

没有答案