簡體   English   中英

Tkinter 從輸入框獲取部分輸入

[英]Tkinter get partial input from Entry box

我是 Python 中的 Tkinter 的新手,我正在使用它來構建用於工作目的的 UI。

用戶界面將允許您通過零售商 ID(整數)、零售商名稱或用戶名搜索數據庫中的企業列表。

我曾嘗試在線搜索並花了很長時間試圖在 Stackoverflow 上找到我要找的東西,但找不到我需要的東西。

我真正苦苦掙扎的是能夠通過搜索框中的部分字符串進行搜索並將結果顯示在列表框中。 下面的代碼允許我返回一個企業列表,但前提是我輸入了數據庫中出現的企業的確切名稱。

我想要實現的是,假設數據庫中有 2 個零售商(這些顯然只是示例):

“市場” “超市”

如果我在輸入框中鍵入“市場”,我希望在列表框中看到這兩個。 如果我鍵入“Super”或“Supermarket”,我希望只看到“Supermarket”零售商名稱,我也不希望它區分大小寫。

然后,我希望能夠從結果中獲得 select 業務並執行一些其他任務,例如發送自動電子郵件。

我可以訪問 MySQL 服務器數據庫。

這是代碼:

# 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()

我希望所有這些信息對您有所幫助!

現在已修復。 問題在於我在輸入框中搜索字符串的方式。 我需要使用“f-string”字符串格式化功能。

以前的錯誤代碼:

搜索 = search_box.get()

名稱 =(搜索,)

正確的代碼

搜索 = search_box.get()

名稱 = (f'%{searched}%', )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM