首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter从输入框获取部分输入

Tkinter从输入框获取部分输入
EN

Stack Overflow用户
提问于 2022-02-22 14:07:16
回答 1查看 82关注 0票数 0

我是Python中的Tkinter新手,我正在使用它来构建一个用于工作目的的UI。

UI将允许您通过零售商ID (Integer)、零售商名称或用户名搜索数据库中的企业列表。

我试着在网上搜索,花了很长时间试图在Stackoverflow上找到我想要的东西,但是找不到我需要的东西。

我真正挣扎的是能够通过搜索框中的部分字符串进行搜索,并在列表框中显示结果。下面的代码允许我返回一个业务列表,但前提是我必须键入数据库中所显示的业务的确切名称。

我想要做的是,假设数据库中有2家零售商(很明显,这些只是例子):

“市场”“超市”

如果我在输入框中输入"Market“,我希望在列表框中看到这两种情况。如果我键入“超级”或“超市”,我希望只看到“超市”零售商的名称,我也不希望这是大小写敏感。

然后,我将希望能够从结果中选择一个业务,并执行一些其他任务,如发送自动电子邮件。

我可以访问MySQL服务器数据库。

以下是代码:

代码语言:javascript
复制
# Search businesses
def search_now():
    selected = drop.get()
    sql = ""
    if selected == "Search by...":
        searched_label.config(text="You forgot to pick an option!")
    if selected == "Business Name":
        sql = "SELECT Retailer, Retailer_Name, Account_ID, Password FROM Retailers WHERE Retailer_Name like ?"
        searched_label.config(text="Business(s):")
    if selected == "Business ID":
        sql = "SELECT Retailer, Retailer_Name, Account_ID, Password FROM Retailers WHERE Retailer like ?"
        searched_label.config(text="Business(s):")
    if selected == "Username":
        sql = "SELECT Retailer, Retailer_Name, Account_ID, Password FROM Retailers WHERE Account_ID like ?"
        searched_label.config(text="Business(s):")

    searched = search_box.get()
    #sql = "SELECT Retailer, Retailer_Name, Account_ID, Password FROM Retailers WHERE Retailer_Name like ?"
    name = (f'%{searched}%', )
    businesses = c.execute(sql, name)
    businesses = c.fetchall()

    #Clear the listbox
    my_list.delete(0, END)

    if not businesses:
        searched_label.config(text="Business not found")

    else:
        for business in businesses:
            my_list.insert(0, str(business[0]) + " " + business[1] + " " + business[2])


# Entry box to search businesses
search_box = Entry(root)
search_box.grid(row=1, column=1, padx=10, pady=10)
# Entry box label search businesses
search_box_label = Label(root, text="Enter Business name:")
search_box_label.grid(row=1, column=0, padx=1, pady=10)
# Entry box search button for businesses
search_button = Button(root, text="Search", command=search_now)
search_button.grid(row=1, column=4, padx=10, pady=10)
# Drop down box
drop = ttk.Combobox(root, value=["Search by...", "Business Name", "Business ID", "Username"])
drop.current(0)
drop.grid(row=1, column=2)

# Create searched result label
searched_label = Label(root, text="")
searched_label.grid(row=2, column=0, sticky=W, columnspan=2)


# Create a table
title_label = Label(root, text="CRM", font=("Helvetica", 16))
title_label.grid(row=0, column=0, columnspan=2, sticky=W, pady=10)


# Create a listbox
my_list = Listbox(root, width=50)
my_list.grid(row=10, column=0, columnspan=3, sticky=W, pady=10, padx=10)


root.mainloop()

我希望所有这些信息都有帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-01 17:08:32

现在已经修好了!问题在于我在输入框中搜索字符串的方式。我需要使用"f- string“字符串格式化功能。

以前的错误代码:

搜索= search_box.get()

名称=(搜索)

正确码

搜索= search_box.get()

名称=(f‘%{搜索}%’,)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71222753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档