程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

實踐登錄注冊案例(使用Python中的tkinter進行GUI編程)

編輯:Python

簡介

下面我們將實踐一下,使用tkinter完成一個簡單的登錄注冊案例。

完整代碼

# coding:utf-8
import tkinter as tk
from tkinter import messagebox
""" 登錄案例 """
# 數據庫
date_base = [{
"username":"zxy", "password" :"123456"},
{
"username":"lxy", "password" :"123456"},
]
# 獲取窗口
window = tk.Tk()
# 設置窗口的標題
window.title("登錄界面")
# 設置窗口的尺寸
window.geometry("1000x500")
# 建立一個畫布
canvas = tk.Canvas(window, width=1000, height=200, bg="blue")
# 放置畫布
canvas.pack()
image_file = tk.PhotoImage(file="img_1.png")
# 將圖片文件放到畫布中
canvas.create_image(0, 0,anchor="nw", image = image_file)
# 用戶名標簽
username_l = tk.Label(window, text="用戶名", font="楷體")
username_l.place(x=301, y=251)
# 密碼標簽
password_l = tk.Label(window, text="密碼", font="楷體", )
password_l.place(x=301, y=301)
var_username = tk.StringVar()
var_password = tk.StringVar()
# 用戶名輸入框
username_entry = tk.Entry(window, width=30, textvariable=var_username)
username_entry.place(x=401, y=251)
# 密碼輸入框
password_entry = tk.Entry(window, width=30, textvariable=var_password, show="*")
password_entry.place(x=401, y=301)
var_register_username = tk.StringVar()
var_register_password = tk.StringVar()
var_confirm_password = tk.StringVar()
# 注冊處理
def do_register():
register_username_v = var_register_username.get()
register_password_v = var_register_password.get()
confirm_password_v = var_confirm_password.get()
db_have = False
for item in date_base:
if item.get("username") == register_username_v:
db_have = True
break
# 格式校驗,並進行提示
if register_username_v == "":
messagebox.showwarning(title="注冊失敗", message="用戶名不能為空!")
return
elif register_password_v == "":
messagebox.showwarning(title="注冊失敗", message="密碼不能為空!")
return
elif date_base == True:
messagebox.showwarning(title="注冊失敗", message="該用戶名已存在")
elif register_password_v != confirm_password_v:
messagebox.showwarning(title="兩次密碼不一致", message="您兩次輸入的密碼不一致啊!")
# 格式校驗成功,進行注冊
if register_username_v != "" and register_password_v != "" and confirm_password_v != "" and register_password_v == confirm_password_v:
date_base.append({
"username": register_username_v, "password": register_password_v})
messagebox.showinfo(title="注冊成功", message=f"恭喜用戶:{
register_username_v}注冊成功")
# 注冊頁面
def to_register():
# 子窗口
sub_window = tk.Toplevel(window)
sub_window.title("注冊界面")
sub_window.geometry("800x400")
# 用戶名標簽
username_l = tk.Label(sub_window, text="用戶名", font="楷體")
username_l.place(x=271, y=151)
# 密碼標簽
password_l = tk.Label(sub_window, text="密碼", font="楷體", )
password_l.place(x=271, y=201)
# 確認密碼標簽
confirm_password_l = tk.Label(sub_window, text="確認密碼", font="楷體", )
confirm_password_l.place(x=271, y=251)
# 用戶名輸入框
username_entry = tk.Entry(sub_window, width=30, textvariable=var_register_username)
username_entry.place(x=351, y=151)
# 密碼輸入框
password_entry = tk.Entry(sub_window, width=30, textvariable=var_register_password, show="*")
password_entry.place(x=351, y=201)
# 確認密碼輸入框
confirm_password_entry = tk.Entry(sub_window, width=30, textvariable=var_confirm_password, show="*")
confirm_password_entry.place(x=351, y=251)
# 注冊按鈕
register_button = tk.Button(sub_window, text="注冊", font="楷體", command=do_register)
register_button.place(x=401, y=301)
# 登錄工作
def login_job():
username_value = var_username.get()
password_value = var_password.get()
db_have = False
# 先看是否存在該用戶
for item in date_base:
if username_value == item.get("username"):
db_have = True
break
# 各種校驗
if username_value == "":
messagebox.showwarning(title="用戶名不能為空", message="親,用戶名不能為空")
elif password_value == "":
messagebox.showwarning(title="密碼不能為空", message="親,密碼不能為空")
elif db_have == False:
result = messagebox.askokcancel(title="該用戶不存在", message="該用戶不存在,親,您是否馬上去注冊?")
if result == True:
to_register()
else:
# 用戶名在數據庫中存在
for i in date_base:
if username_value == i.get("username") and password_value == i.get("password"):
messagebox.showinfo(title="登錄成功", message=f"{
username_value},恭喜您登錄成功!")
break
elif username_value == i.get("username") and password_value != i.get("password"):
messagebox.showerror(title="登錄失敗", message="密碼錯誤")
# 登錄按鈕
login_button =tk.Button(window, text="登錄", font="楷體", command=login_job)
login_button.place(x=401, y=351)
# 注冊按鈕
register_button = tk.Button(window, text="注冊", font="楷體", command=to_register)
register_button.place(x=521, y=351)
# 將窗口循環起來
window.mainloop()

運行效果

附錄:本文參考自——莫煩Python,覺得本文有用的話,記得點贊+收藏+關注!!!如有錯誤,懇請批評指正!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved