我對 Python 和 tkinter 相當陌生,我現在正在努力的部分是從串列框中選擇業務后從 MySQL 資料庫中獲取附加值。
串列框只會列出企業名稱、企業 ID 或用戶名,但是當我選擇企業時,我需要從資料庫中自動更新一些標簽,這些標簽不會出現在串列框中。
需要更新的標簽有: 名字 用戶名 密碼
我能得到的最接近的是下面的代碼,它用公司名稱更新“用戶名”標簽。我已經嘗試了很多方法來嘗試使用索引獲取相關值,但無法讓它發揮作用。
# Select business from listbox
def select_business(event):
selection = event.widget.curselection()
#our_businesses.get(ANCHOR)
index = selection[0]
print('event:', event)
print('widget:', event.widget)
print('(event) current:', event.widget.get(event.widget.curselection()))
username_display_label.config(text=our_businesses.get(our_businesses.curselection()))
print('---')
# 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 * FROM Retailers WHERE Retailer_Name like ? ORDER BY Retailer_Name ASC"""
searched_label.config(text="Businesses found:")
if selected == "Business ID":
sql = """SELECT * FROM Retailers WHERE Retailer like ? ORDER BY Retailer_Name ASC"""
searched_label.config(text="Businesses found:")
if selected == "Username":
sql = """SELECT * FROM Retailers WHERE Account_ID like ? ORDER BY Retailer_Name ASC"""
searched_label.config(text="Businesses found:")
searched = search_box.get()
#sql = "SELECT TOP 10 Retailer, Retailer_Name, Account_ID, Password FROM Retailers WHERE Retailer_Name = ?"
name = (f'%{searched}%', )
global businesses
businesses = c.execute(sql, name)
businesses = c.fetchall()
#Clear the listbox
our_businesses.delete(0, END)
if not businesses:
searched_label.config(text="Business not found")
else:
#global business
for business in businesses:
totals = len(businesses)
#print(totals)
our_businesses.insert(END, str(business[1]))
searched_label.config(text="Businesses found: " str(totals))
任何幫助將非常感激!
uj5u.com熱心網友回復:
我無法運行它,所以我只能猜測。
看來您在全域變數中擁有所有資訊,businesses因此您可以使用它來獲取資料行
像這樣的東西:
def select_business(event):
selection = event.widget.curselection()
index = selection[0]
person = businesses[index] # row from database
first_name_display_label.config(text=peron[0])
username_display_label.config(text=peron[1])
password_display_label.config(text=peron[2])
uj5u.com熱心網友回復:
問題在于“選擇業務”功能。由于我將“業務”作為全域變數,因此我可以通過索引獲得所需的行。
但是,您需要確保您的索引是正確的,因為我發現我計算錯誤并且我使用的選定索引在資料庫中是空白的!
這是正確的功能:
def select_business(event):
selection = event.widget.curselection()
index = selection[0]
retailer = businesses[index]
businessname_display_label.config(text=retailer[1])
firstname_display_label.config(text=retailer[3])
username_display_label.config(text=retailer[33])
password_display_label.config(text=retailer[34])
email_display_label.config(text=retailer[13])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/435651.html
上一篇:如何從下拉選單中插入資料到SQL
