【问题标题】:How to create search form using tkinter Python to search from the SQLITE3 Database?如何使用 tkinter Python 创建搜索表单以从 SQLITE3 数据库中搜索?
【发布时间】:2018-03-17 03:39:52
【问题描述】:

我想使用 Tkinter 创建一个搜索表单,用户可以在其中输入他们想从 SQLite3 数据库中查看的名称。名为 New_Assignment 的数据库包含有关此人的所有详细信息。但是我对如何将 Tkinter 连接到数据库并使用名称进行搜索感到困惑?这就是我目前所得到的。

import sqlite3
conn = sqlite3.connect('new_assignment.db')
c = conn.cursor()
from tkinter import *
top = Tk()
top.title('Search form')
person_name = Entry()
person_name.pack(side = RIGHT, expand = True)
mainloop()

【问题讨论】:

  • 这对于 SO 来说可能是一个过于宽泛的问题;你可能想去 python.org 页面,去社区,然后寻找 IRC 频道或 python-list 邮件列表。但作为提示:您需要创建一个按钮,单击该按钮时会调用一个函数。在该函数中,您需要访问person_name 的内容,您可以通过向Entry 询问其文本或使用Tk StringVar 来访问Entry 的Tkinter Book 章节中的建议。更一般地说,如果您阅读了本书的相关部分并且仍然卡住,那么您应该有一个适合这里的更具体的问题。

标签: python tkinter sqlite


【解决方案1】:

要从Entry 小部件中获取文本,请使用get() 方法(它返回文本框中的字符串)。

name_box = Entry()
name_box.pack(side=RIGHT, expand=True)

person_name = name_box.get()

但是,您需要像@abarnert 在 cmets 中所说的那样添加一个按钮。附上这个函数:

def get_name():
  global person_name
  person_name =  name_box.get()
  data = c.fetchall()
  print(data)
  for row in data:
      searchlist.append(row)
      var1=str(person_name)
      read_from_db(var1) 

(当然,修改read_from_db() 以采用如下变量:

def read_from_db(var):
    curs.execute("SELECT *" + " FROM personal WHERE Name LIKE (?)", ('%'+var+'%',))

)

按钮的代码示例可能如下所示:

button = Button(top, text="Display text", command=get_name)

把它们放在一起:

import sqlite3

conn = sqlite3.connect('new_assignment.db')
c = conn.cursor()

from tkinter import *

top = Tk()
top.title('Search form')

name_box = Entry()
name_box.pack(side = RIGHT, expand = True)

def get_name():
    global person_name
    person_name = name_box.get()
    data = c.fetchall()
    print(data)
    for row in data:
        searchlist.append(row)
        var1=str(person_name)
        read_from_db(var1) 


def read_from_db(var):
    curs.execute("SELECT *" + " FROM personal WHERE Name LIKE (?)", ('%'+var+'%',))


person_name = ""
button = Button(top, text="Display text", command=get_name)
button.pack()


mainloop()

【讨论】:

  • def read_from_db(): curs.execute("SELECT *" + " FROM personal WHERE Name LIKE (?)", ('%'+var1+'%',)) data = curs.fetchall () print(data) for row in data: searchlist.append(row) var1=str(name_box) read_from_db() 添加这些代码后仍然无法检索任何数据?
猜你喜欢
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 2016-05-18
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
相关资源
最近更新 更多