iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
SideProject30

python基礎及數據科學之應用系列 第 23

python基礎及數據科學之應用day 23[tkinter資料庫介紹4]

  • 分享至 

  • xImage
  •  

day 23:
/images/emoticon/emoticon06.gif
希望瀏覽數可以多點啦,更多人看我的教學後有所增長

今天將會介紹一個簡單的登入專案(原本打算加入讀取資料的部份,但不夠時間準備所以又是押後了。)

範例:

from tkinter import *
from tkinter import messagebox

entry_username = None
entry_password = None
frame = None
label_success = None
button_logout = None


def new_frame():
    global label_success, button_logout

    label_success = Label(window, text="Hello, admin!", font=("Arial", 14))
    label_success.pack(pady=20)
    button_logout = Button(window, text="Logout", command=logout)
    button_logout.pack()


def login():
    global entry_username, entry_password, frame
    username = entry_username.get()
    password = entry_password.get()
    
    if username == "admin" and password == "123456":
        messagebox.showinfo("Login", "Login successful!")
        #刪除登入表單
        frame.destroy()
        #新增的小工具
        new_frame()
    else:
        messagebox.showerror("Login", "Invalid username or password.")

def logout():
    global frame, label_success, button_logout

    label_success.pack_forget()
    button_logout.pack_forget()

    create_login_form()

def create_login_form():
    global entry_username, entry_password, frame
    frame = Frame(window, padx=20, pady=20, bg="#f2f2f2")
    frame.pack()
    label_username = Label(frame, text="Username:", font=("Arial", 12), bg="#f2f2f2", fg="#333333")
    label_username.grid(row=0, column=0, sticky=W)

    entry_username = Entry(frame, font=("Arial", 12))
    entry_username.grid(row=0, column=1, padx=10, pady=10)
    
    label_password = Label(frame, text="Password:", font=("Arial", 12), bg="#f2f2f2", fg="#333333")
    label_password.grid(row=1, column=0, sticky=W)
    
    entry_password = Entry(frame, show="*", font=("Arial", 12))
    entry_password.grid(row=1, column=1, padx=10, pady=10)
    
    button_login = Button(frame, text="Login", font=("Arial", 12, "bold"), bg="#333333", fg="#ffffff", command=login)
    button_login.grid(row=2, column=0, columnspan=1, pady=20)
    
    button_quit = Button(frame,text="Quit",font=("Arial", 12, "bold"), bg="#333333", fg="#ffffff",command=window.destroy)
    button_quit.grid(row=2,column=1, columnspan=3, pady=20)

#建立主視窗
window = Tk()
window.title("Login test")
window.configure(bg="#f2f2f2")

# 建立初始登入表單
create_login_form()

#運行主視窗的事件循環
window.mainloop()

先來解釋這段程式碼

global

global是用作執行函數是只能用函數來的變數運行,但加入後可以使用全域變數及更改它的值。

login()

這個就是登入的檢查,昨天已介紹了。

new_frame()

這個是在登入成功的時候會改變整個視窗的內容。

frame

是一個大的內容,放着label_username(登入名稱標籤)、entry_username(登入名稱輸入)、 label_password (登入密碼標籤)、entry_password(登入密碼輸入)、button_login(登入按鈕) 、button_quit(離開按鈕),可以想像類似是一個大箱子放着六個小箱子,在到入成功的時候便會剷除以作放置其他內容。

font

設定字體,有興趣的話可以改成其他字體

logout()

在登入後可以選擇登出,並用pack_forget()剷除目前的物件

執行結果:
https://ithelp.ithome.com.tw/upload/images/20231008/20163173ZZ2dmYRtvH.png

https://ithelp.ithome.com.tw/upload/images/20231008/20163173UKa5vlyuAl.png

各位可以自行嘗試更改登入後出現的內容,並根據昨天的教學轉換成exe檔案分享給朋友
今天的有趣內容到這裏,如果覺得我的文章對你有幫助或有更好的建議,可以追蹤我和不妨在留言區提出,我們明天再見。

reference
https://poe.com


上一篇
python基礎及數據科學之應用day 21[tkinter資料庫介紹3(對話方塊及匯出專案)]
下一篇
python基礎及數據科學之應用day 24[pycord資料庫介紹]
系列文
python基礎及數據科學之應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言