<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了Python+Tkinter簡單實現註冊登入功能的具體程式碼,供大家參考,具體內容如下
專案結構:
原始碼:
# -*- coding: utf-8 -*- """ @date: 2022/01/09 17:40 @author: Anker @python:v3.10 """ import tkinter as tk import tkinter.messagebox import pymysql # 定義要執行的建立表的SQL語句 test_sql = """ CREATE TABLE IF NOT EXISTS user( id INT auto_increment PRIMARY KEY, name varchar(20) not null, password varchar(20) not null )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 登入視窗 window = tk.Tk() window.title('學生考試系統') window.geometry('800x500') # 登入背景圖片 canvas = tk.Canvas(window, height=1920, width=1080) login_background = tk.PhotoImage(file='./view.png') login_image = canvas.create_image(0, 0, anchor='nw', image=login_background) canvas.pack(side='top') # 使用者名稱密碼標籤 tk.Label(window, text='使用者名稱:', bg='yellow').place(x=300, y=200) tk.Label(window, text='密 碼:', bg='yellow').place(x=300, y=250) # 使用者名稱輸入框 var_user_name = tk.StringVar() entry_user_name = tk.Entry(window, textvariable=var_user_name) entry_user_name.place(x=370, y=200) # 密碼輸入框 var_user_pwd = tk.StringVar() entry_user_pwd = tk.Entry(window, textvariable=var_user_pwd, show='*') entry_user_pwd.place(x=370, y=250) # 登入函數 def user_login(): # 輸入框獲取使用者名稱密碼 user_name = var_user_name.get() user_password = var_user_pwd.get() # 連線test_sql資料庫 conn = pymysql.connect(host="localhost", user="root", password="123456", database="test_sql", charset="utf8") curs = conn.cursor() # 執行SQL語句,建立user資料表 curs.execute(test_sql) # 執行SQL語句,從user資料表中查詢name和password欄位值 curs.execute("SELECT name,password FROM user") # 將資料庫查詢的結果儲存在result中 result = curs.fetchall() # fetchone()函數它的返回值是單個的元組, 也就是一行記錄, 如果沒有結果, 那就會返回null # fetchall()函數它的返回值是多個元組, 即返回多個行記錄, 如果沒有結果, 返回的是() # assert result, "資料庫無該使用者資訊" # 新增斷言,判斷資料庫有無該使用者資訊,沒有就直接斷言錯誤 # 登入賬號操作 name_list = [it[0] for it in result] # 從資料庫查詢的result中遍歷查詢元組中第一個元素name # 判斷使用者名稱或密碼不能為空 if not(user_name and user_password): tk.messagebox.showwarning(title='警告', message='使用者名稱或密碼不能為空') # 判斷使用者名稱和密碼是否匹配 elif user_name in name_list: if user_password == result[name_list.index(user_name)][1]: tk.messagebox.showinfo(title='歡迎您', message=' 登入成功!rn當前登入賬號為:' + user_name) selection() else: tk.messagebox.showerror(title='錯誤', message='密碼輸入錯誤') # 賬號不在資料庫中,則彈出是否註冊的框 else: is_signup = tk.messagebox.askyesno(title='提示', message='該賬號不存在,是否現在註冊?') if is_signup: user_register() # 註冊函數 def user_register(): # 確認註冊函數 def register_confirm(): # 獲取輸入框內的內容 name = new_name.get() password = new_password.get() password_confirm = new_password_confirm.get() # 先在本地手動建立一個test_sql資料庫,然後連線該資料庫 conn = pymysql.connect(host="localhost", user="root", password="123456", database="test_sql", charset="utf8") curs = conn.cursor() # 註冊賬號操作 try: # 執行SQL語句,建立user資料表 curs.execute(test_sql) # 向user資料表中插入語句 insert_sql = "INSERT INTO user(name, password) VALUES ('%s', '%s')" % (name, password) # 讀取user資料表中的name和password欄位值 read_sql = f'''select * from user where name = "{name}" and password = "{password}" ''' user_data = curs.execute(read_sql) # 判斷註冊賬號和密碼 if not (name and password): tk.messagebox.showwarning(title='警告', message='註冊賬號或密碼不能為空') elif password != password_confirm: tk.messagebox.showwarning(title='警告', message='兩次密碼輸入不一致,請重新輸入') else: if user_data.real: tk.messagebox.showwarning(title='警告', message='該註冊賬號已存在') else: curs.execute(insert_sql) tk.messagebox.showinfo(title='恭喜您', message=' 註冊成功!rn註冊賬號為:' + name) print("資料插入成功") # 提交到資料庫執行 conn.commit() curs.close() except IOError: print("資料插入失敗") conn.rollback() # 關閉資料庫連線 conn.close() window_sign_up.destroy() # 註冊視窗 window_sign_up = tk.Toplevel(window) window_sign_up.geometry('350x200') window_sign_up.title('歡迎註冊') # 註冊賬號及標籤、輸入框 new_name = tk.StringVar() tk.Label(window_sign_up, bg='green', text='註冊賬號:').place(x=50, y=10) tk.Entry(window_sign_up, textvariable=new_name).place(x=150, y=10) # 註冊密碼及標籤、輸入框 new_password = tk.StringVar() tk.Label(window_sign_up, bg='green', text='密 碼:').place(x=50, y=50) tk.Entry(window_sign_up, textvariable=new_password, show='*').place(x=150, y=50) # 重複密碼及標籤、輸入框 new_password_confirm = tk.StringVar() tk.Label(window_sign_up, bg='green', text='確認密碼:').place(x=50, y=90) tk.Entry(window_sign_up, textvariable=new_password_confirm, show='*').place(x=150, y=90) # 確認註冊按鈕及位置 bt_confirm_sign_up = tk.Button(window_sign_up, bg='green', text='確認註冊', command=register_confirm) bt_confirm_sign_up.place(x=150, y=130) # 選擇題函數 def selection(): def wrong(): tk.messagebox.showerror(title='錯誤', message='抱歉,您答錯了') def right(): tk.messagebox.showinfo(title='提示', message='恭喜您,答對了') # 選擇題視窗 window_options = tk.Toplevel(window) window_options.geometry('350x200') window_options.title('選擇題') # 在圖形介面上建立一個標籤label用以顯示並放置 var = tk.StringVar() # 定義一個var用來將radiobutton的值和Label的值聯絡在一起. lab = tk.Label(window_options, bg='red', fg='white', width=50) lab.pack() lab.config(text='第1題:兩個銳角均為60度的三角形是什麼三角形()' + var.get()) # 建立3個radiobutton選項,其中variable=var, value='A'表示:當滑鼠選中其中一個選項,把value的值A放到變數var中,然後賦值給variable radio1 = tk.Radiobutton(window_options, text='A:銳角三角形', variable=var, value='A', command=wrong) radio1.pack() radio2 = tk.Radiobutton(window_options, text='B:鈍角三角形', variable=var, value='B', command=wrong) radio2.pack() radio3 = tk.Radiobutton(window_options, text='C:等邊三角形', variable=var, value='C', command=right) radio3.pack() radio4 = tk.Radiobutton(window_options, text='D:直角三角形', variable=var, value='D', command=wrong) radio4.pack() # 註冊和登入按鈕 bt_register = tk.Button(window, bg='yellow', text='註冊', command=user_register) bt_register.place(x=380, y=300) bt_login = tk.Button(window, bg='yellow', text='登入', command=user_login) bt_login.place(x=440, y=300) # 主迴圈 window.mainloop()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45