Python + Tkinter簡單實現註冊登入(連線本地MySQL資料庫)
# -*- 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=' 登入成功! \r\n 當前登入賬號為: ' + 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=' 註冊成功! \r\n 註冊賬號為: ' + 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 選項,外匯跟單gendan5.com其中 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()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2852854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單的登入註冊(前端+後端+MySQL資料庫 DRuid連線池 DBUtils)前端後端MySql資料庫UI
- javaweb專案(1)連線資料庫,登入註冊JavaWeb資料庫
- 10.註冊和登入功能實現(3)—— 註冊資料寫入資料庫資料庫
- node+express+mongDB實現簡單登入註冊Express
- node+ajax+mysql實現登入註冊MySql
- 簡單登入註冊實現(Java物件導向複習)Java物件
- python 簡易微信實現(註冊登入+資料庫儲存+聊天+GUI+檔案傳輸)Python資料庫GUI
- swing 實現使用者登入註冊介面(不使用資料庫)資料庫
- HTML基礎實現簡單的註冊和登入頁面HTML
- Python連線MySQL資料庫PythonMySql資料庫
- python資料插入連線MySQL資料庫PythonMySql資料庫
- Node.js+Mysql+Vue+ElementUI 實現登入註冊登出功能Node.jsMySqlVueUI
- WebForm登入頁面(連線資料庫)WebORM資料庫
- python+selenium 連線MySQL資料庫PythonMySql資料庫
- python操作MySQL資料庫連線(pymysql)PythonMySql資料庫
- python連線mysql資料庫步驟PythonMySql資料庫
- 使用EF 連線 資料庫 SQLserver、MySql 實現 CodeFirst資料庫ServerMySql
- 成品直播原始碼推薦,登入和註冊兩個頁面的簡單實現原始碼
- Python 連線mysql資料庫進行操作PythonMySql資料庫
- 連線資料庫-mysql資料庫MySql
- 教你python tkinter實現簡單計算器功能Python
- 資料庫連線池實現資料庫
- 簡單實現登陸註冊gui介面以及打包成exe檔案GUI
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- express+vue+mongodb+session 實現註冊登入ExpressVueMongoDBSession
- Laravel 實現 passport 使用者註冊登入LaravelPassport
- Python實現MySQL連線池PythonMySql
- Android需求之RxJava2實現表單校驗(註冊登入)AndroidRxJava
- 資料庫表連線的簡單解釋資料庫
- KIDataGrip連線Mysql並建立資料庫的方法實現ztpMySql資料庫
- 崑崙資料庫 MySQL 連線協議簡介資料庫MySql協議
- 如何連線MySQL資料庫MySql資料庫
- django | 連線mysql資料庫DjangoMySql資料庫
- pycharm連線MySQL資料庫PyCharmMySql資料庫
- Spartacus 註冊和登入頁面的實現細節
- Springboot+Vue實現線上聊天室專案-登入、註冊介面的實現Spring BootVue
- python遠端連線mysql以及pandas.DataFrame.to_sql寫入資料庫PythonMySql資料庫
- PHP 實現簡單的資料採集併入庫PHP