大學生。我這里有一些代碼,但我似乎無法從 lambda 函式中檢索 .get() 用戶條目。結果,我無法進行任何例外處理。我能管理的唯一問題是檢查以確保資料庫中沒有重復的用戶名。我嘗試將 .get() 變數回傳給函式,但無濟于事。這是我所指的代碼片段:
def second_win():
window = Tk()
window.title("Please enter your personal details")
window.geometry('500x500')
Label(window, text = 'Create Username').grid(row = 0, column = 0)
Label(window, text=" First Name").grid(row=1, column = 0 )
Label(window, text=" Last Name").grid(row=2,column = 0)
Label(window, text = "Age").grid(row = 3,column = 0)
Label(window, text = "Height (m)").grid(row = 4,column = 0)
Label(window, text = "Weight(kg)").grid(row = 5,column = 0)
UserName = Entry(window, width = 25)
UserName.grid(row = 0, column =1)
User_FirstName = Entry(window, width = 25)
User_FirstName.grid(row=1, column = 1)
User_Surname = Entry(window, width = 25)
User_Surname.grid(row=2, column = 1 )
User_Age = Entry(window, width = 25)
User_Age.grid(row = 3, column = 1)
User_Height = Entry(window, width = 25)
User_Height.grid(row = 4, column = 1)
User_Weight = Entry(window, width = 25)
User_Weight.grid(row = 5, column = 1)
Button(window, text='Quit', command=window.quit).grid(row=10, column=0, sticky=W, padx = 100, pady=100)
Button(window, text='Submit', command= lambda: submit_details([ UserName.get(), User_FirstName.get(), User_Surname.get(), User_Age.get(), User_Height.get(),User_Weight.get()])).grid()
def submit_details(details):
user_name_list = cursor.execute(''' SELECT UserName FROM GetUserDataInput''')
if details[0] in [username[0] for username in user_name_list]:
messagebox.showerror("Error", "User Already Exists")
else:
sql = '''INSERT INTO GetUserDataInput(UserName, FirstName, LastName, Age, Height, Weight)
VALUES(?, ?, ?, ?, ?, ?)'''
cursor.execute(sql, details)
在這里,sql 只是一個類,其中包含一些與資料庫相關的方法,例如:創建連接、游標和查詢。我沒有把它放在這里以防它是多余的,但會很樂意將它放在需要的地方。
感謝任何可以提供幫助的人。
uj5u.com熱心網友回復:
最簡單的解決方案是不使用 lambda。創建一個合適的函式,它會更容易撰寫、更容易理解、更容易除錯。在這種特定情況下,lambda除了使您的代碼比需要的更復雜之外什么都不做。
在這種特定情況下,只需將呼叫移至函式get內部。submit_details
def second_win():
...
Button(window, text='Submit', command= submit_details).grid()
...
def submit_details():
username = UserName.get()
firstname = User_FirstName.get()
surname = User_Surname.get()
age = User_Age.get()
height = User_Height.get()
weight = User_weight.get()
...
如果您希望保持原樣submit_details,請創建一個中間函式以在將資料傳遞給之前從 UI 獲取資料submit_details:
def second_win():
...
Button(window, text='Submit', command=submit).grid()
...
def submit():
username = UserName.get()
firstname = User_FirstName.get()
surname = User_Surname.get()
age = User_Age.get()
height = User_Height.get()
weight = User_weight.get()
data = [username, firstname, surname, age, height, weight]
submit_details(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458711.html
上一篇:python3檔案打開寫例外處理
